Index: /FCKeditor/trunk/_test/manual/fckstyle/test1.html
===================================================================
--- /FCKeditor/trunk/_test/manual/fckstyle/test1.html	(revision 809)
+++ /FCKeditor/trunk/_test/manual/fckstyle/test1.html	(revision 810)
@@ -37,4 +37,5 @@
 FCKConfig.BasePath = '../../../editor/' ;
 FCKConfig.RemoveFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strong,sub,sup,tt,u,var' ;
+FCKConfig.EnterMode = 'p' ;
 
 // Do not add, rename or remove styles here.
Index: /FCKeditor/trunk/editor/_source/classes/fckdomrangeinterator.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckdomrangeinterator.js	(revision 809)
+++ /FCKeditor/trunk/editor/_source/classes/fckdomrangeinterator.js	(revision 810)
@@ -62,7 +62,16 @@
 	GetNextParagraph : function()
 	{
+		// The block element to be returned.
 		var block ;
+		
+		// The range object used to identify the paragraph contents.
 		var range ;
+		
+		// Indicated that the current element in the loop is the last one.
 		var isLast ;
+		
+		// Instructs to cleanup remaining BRs.
+		var removePreviousBr ;
+		var removeLastBr ;
 
 		var boundarySet = this.ForceBrBreak ? FCKListsLib.ListBoundaries : FCKListsLib.BlockBoundaries ;
@@ -222,9 +231,6 @@
 				range.InsertNode( block ) ;
 				
-				// When fixing a block, we can safely remove any remaining <br>
-				// before of it.
-				var previousSibling = block.previousSibling ;
-				if ( previousSibling && previousSibling.nodeType == 1 && previousSibling.nodeName.toLowerCase() == 'br' )
-					previousSibling.parentNode.removeChild( previousSibling ) ;
+				removePreviousBr = true ;
+				removeLastBr = true ;				
 			}
 			else if ( block.nodeName.toLowerCase() != 'li' )
@@ -244,5 +250,8 @@
 					// Split the block. At this point, the range will be in the
 					// right position for our intents.
-					range.SplitBlock() ;
+					var splitInfo = range.SplitBlock() ;
+					
+					removePreviousBr = !splitInfo.WasStartOfBlock ;
+					removeLastBr = !splitInfo.WasEndOfBlock ;
 
 					// Insert the new block into the DOM.
@@ -262,4 +271,18 @@
 		}
 
+		if ( removePreviousBr )
+		{
+			var previousSibling = block.previousSibling ;
+			if ( previousSibling && previousSibling.nodeType == 1 && previousSibling.nodeName.toLowerCase() == 'br' )
+				previousSibling.parentNode.removeChild( previousSibling ) ;
+		}
+		
+		if ( removeLastBr )
+		{
+			var lastChild = block.lastChild ;
+			if ( lastChild && lastChild.nodeType == 1 && lastChild.nodeName.toLowerCase() == 'br' )
+				block.removeChild( lastChild ) ;
+		}
+		
 		// Get a reference for the next element. This is important because the
 		// above block can be removed or changed, so we can rely on it for the
