Index: /FCKeditor/trunk/editor/_source/classes/fckelementpath.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 122)
+++ /FCKeditor/trunk/editor/_source/classes/fckelementpath.js	(revision 123)
@@ -24,12 +24,11 @@
 				this.LastElement = e ;
 
-			var sElementName = e.nodeName.toUpperCase() ;
+			var sElementName = e.nodeName.toLowerCase() ;
 			
-			// TODO: Review the Regex and move it to the RegexLib.
-			if ( !eBlockLimit && !eBlock && (/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( sElementName ) )
+			if ( !eBlockLimit && !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
 				eBlock = e ;
 				
 			// TODO: Review the Regex and move it to the RegexLib.
-			if ( !eBlockLimit && (/^(?:BODY|TD|TH|CAPTION|FORM)$/).test( sElementName ) )
+			if ( !eBlockLimit && (/^(?:body|td|th|caption|form)$/).test( sElementName ) )
 				eBlockLimit = e ;
 
Index: /FCKeditor/trunk/editor/_source/internals/fckregexlib.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckregexlib.js	(revision 122)
+++ /FCKeditor/trunk/editor/_source/internals/fckregexlib.js	(revision 123)
@@ -81,11 +81,15 @@
 	// We are not handling <ins> and <del> as block elements, for now.
 	BlockElements : { address:1,blockquote:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },
+
+	// Block elements that may be filled with &nbsp; if empty.
+	NonEmptyBlockElements : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },
 	
+	// Elements that may be considered the "Block boundary" in an element path.
+	PathBlockElements : { address:1,blockquote:1,div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 },
+
 	// Inline elements which MUST have child nodes.
 	InlineChildReqElements : { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,'var':1 },
 	
 	// Elements marked as empty "Empty" in the XHTML DTD.
-	EmptyElements : { base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },
-
-	BlockElements : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 }
+	EmptyElements : { base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 }
 } ;
Index: /FCKeditor/trunk/editor/_source/internals/fckxhtml.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckxhtml.js	(revision 122)
+++ /FCKeditor/trunk/editor/_source/internals/fckxhtml.js	(revision 123)
@@ -209,5 +209,5 @@
 			}
 			else
-				this._AppendChildNodes( oNode, htmlNode, Boolean( FCKListsLib.BlockElements[ sNodeName ] ) ) ;
+				this._AppendChildNodes( oNode, htmlNode, Boolean( FCKListsLib.NonEmptyBlockElements[ sNodeName ] ) ) ;
 
 			xmlNode.appendChild( oNode ) ;
