Index: /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js
===================================================================
--- /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1137)
+++ /FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js	(revision 1138)
@@ -45,4 +45,17 @@
 			while ( ( block = iterator.GetNextParagraph() ) )
 				paragraphs.push( block ) ;
+
+			// If no paragraphs, create one from the current selection position.
+			if ( paragraphs.length < 1 )
+			{
+				para = range.Window.document.createElement( FCKConfig.EnterMode.IEquals( 'p' ) ? 'p' : 'div' ) ;
+				range.InsertNode( para ) ;
+				para.appendChild( range.Window.document.createTextNode( '\ufeff' ) ) ;
+				range.MoveToBookmark( bookmark ) ;
+				range.MoveToNodeContents( para ) ;
+				range.Collapse( true ) ;
+				bookmark = range.CreateBookmark() ;
+				paragraphs.push( para ) ;
+			}
 
 			// Make sure all paragraphs have the same parent.
Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 1137)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 1138)
@@ -809,4 +809,6 @@
 	if ( ! FCKBrowserInfo.IsIE && FCKDomTools.PaddingNode )
 	{
+		// Prevent the caret from going between the body and the padding node in Firefox.
+		// i.e. <body>|<p></p></body>
 		var sel = FCK.EditorWindow.getSelection() ;
 		if ( sel && sel.rangeCount == 1 )
@@ -819,4 +821,29 @@
 				sel.removeAllRanges() ;
 				sel.addRange( range ) ;
+			}
+		}
+	}
+	else if ( FCKDomTools.PaddingNode )
+	{
+		// Prevent the caret from going into an empty body but not into the padding node in IE.
+		// i.e. <body><p></p>|</body>
+		var parentElement = FCKSelection.GetParentElement() ;
+		var paddingNode = FCKDomTools.PaddingNode ;
+		if ( parentElement && parentElement.nodeName.IEquals( 'body' ) )
+		{
+			if ( FCK.EditorDocument.body.childNodes.length == 1 
+					&& FCK.EditorDocument.body.firstChild == paddingNode )
+			{
+				var range = FCK.EditorDocument.body.createTextRange() ;
+				var clearContents = false ;
+				if ( !paddingNode.childNodes.firstChild )
+				{
+					paddingNode.appendChild( paddingNode.ownerDocument.createTextNode( '\ufeff' ) ) ;
+					clearContents = true ;
+				}
+				range.moveToElementText( paddingNode ) ;
+				range.select() ;
+				if ( clearContents )
+					range.pasteHTML( '' ) ;
 			}
 		}
