Index: /FCKeditor/trunk/editor/_source/classes/fckdomrange.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckdomrange.js	(revision 405)
+++ /FCKeditor/trunk/editor/_source/classes/fckdomrange.js	(revision 406)
@@ -284,5 +284,22 @@
 		{
 			"Start" : [ this._Range.startOffset ],
-			"End" : [ this._Range.endOffset ]
+			"End" : [ this._Range.endOffset ],
+			"CompareStart" : function( bookmark )
+			{
+				for ( var i = 0 ; i < Math.min( this.Start.length, bookmark.Start.length ) ; i++ )
+				{
+					if ( this.Start[i] < bookmark.Start[i] )
+						return -1;
+					else if (this.Start[i] > bookmark.Start[i] )
+						return 1;
+				}
+
+				if ( this.Start.length < bookmark.Start.length )
+					return -1;
+				else if (this.Start.length > bookmark.Start.length )
+					return 1;
+
+				return 0;
+			}
 		} ;
 		// Then, we record down the precise position of the container nodes
Index: /FCKeditor/trunk/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 405)
+++ /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 406)
@@ -95,4 +95,7 @@
 FCKEnterKey.prototype.DoEnter = function( mode, hasShift )
 {
+	// Save an undo snapshot before doing anything
+	FCKUndo.SaveUndoStep() ;
+
 	this._HasShift = ( hasShift === true ) ;
 
Index: /FCKeditor/trunk/editor/_source/classes/fckkeystrokehandler.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckkeystrokehandler.js	(revision 405)
+++ /FCKeditor/trunk/editor/_source/classes/fckkeystrokehandler.js	(revision 406)
