Index: /FCKeditor/trunk/_test/automated/tests/fckdomrange.html
===================================================================
--- /FCKeditor/trunk/_test/automated/tests/fckdomrange.html	(revision 1008)
+++ /FCKeditor/trunk/_test/automated/tests/fckdomrange.html	(revision 1009)
@@ -532,4 +532,37 @@
 
 	assertEquals( 'Range HTML', 'this text has no block tag.<br>it should be corrected when working with the enter key set to p or div tags. the <strong id=_strongnopara>br configuration</strong> should not make changes instead.<br>it has three lines separated by br tags.', GetTestInnerHtml( tmpDiv ) ) ;
+}
+
+function test_Expand_3()
+{
+	var range = new FCKDomRange( window ) ;
+	range.MoveToNodeContents( document.getElementById('_I1') ) ;
+
+	range.Expand( 'inline_elements' ) ;
+	
+	var innerRange = range._Range ;
+
+	assertEquals( 'startContainer', document.getElementById('_I1').parentNode, innerRange.startContainer ) ;
+	assertEquals( 'startOffset', FCKDomTools.GetIndexOf( document.getElementById('_I1') ), innerRange.startOffset ) ;
+	assertEquals( 'endContainer', document.getElementById('_B1').parentNode, innerRange.endContainer ) ;
+	assertEquals( 'endOffset', FCKDomTools.GetIndexOf( document.getElementById('_B1') ) + 1, innerRange.endOffset ) ;
+}
+
+// #1392
+function test_Expand_4()
+{
+	var textNode = document.getElementById('_B1').childNodes[2] ;
+	
+	var range = new FCKDomRange( window ) ;
+	range.MoveToNodeContents( textNode ) ;
+
+	range.Expand( 'inline_elements' ) ;
+	
+	var innerRange = range._Range ;
+	
+	assertEquals( 'startContainer', textNode, innerRange.startContainer ) ;
+	assertEquals( 'startOffset', 0, innerRange.startOffset ) ;
+	assertEquals( 'endContainer', textNode, innerRange.endContainer ) ;
+	assertEquals( 'endOffset', textNode.nodeValue.length, innerRange.endOffset ) ;
 }
 
@@ -678,4 +711,5 @@
 	<p>
 		The above is the FCKeditor logo loaded from the FCKeditor.net web site.</p>
+	<p><b id="_B1">Line 1<br />Line 2<br /><i id="_I1">Line 3</i></b></p>
 </body>
 </html>
Index: /FCKeditor/trunk/editor/_source/classes/fckdomrange.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckdomrange.js	(revision 1008)
+++ /FCKeditor/trunk/editor/_source/classes/fckdomrange.js	(revision 1009)
@@ -531,14 +531,17 @@
 
 					if ( oNode.nodeType != 1 )
-						oNode = oNode.parentNode ;
-
-					while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
+						oNode = oNode.previousSibling ? null : oNode.parentNode ;
+					
+					if ( oNode )
 					{
-						this._Range.setStartBefore( oNode ) ;
-
-						if ( oNode != oNode.parentNode.firstChild )
-							break ;
-
-						oNode = oNode.parentNode ;
+						while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
+						{
+							this._Range.setStartBefore( oNode ) ;
+
+							if ( oNode != oNode.parentNode.firstChild )
+								break ;
+
+							oNode = oNode.parentNode ;
+						}
 					}
 				}
@@ -551,14 +554,17 @@
 				{
 					if ( oNode.nodeType != 1 )
-						oNode = oNode.parentNode ;
-
-					while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
+						oNode = oNode.nextSibling ? null : oNode.parentNode ;
+
+					if ( oNode )
 					{
-						this._Range.setEndAfter( oNode ) ;
-
-						if ( oNode != oNode.parentNode.lastChild )
-							break ;
-
-						oNode = oNode.parentNode ;
+						while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
+						{
+							this._Range.setEndAfter( oNode ) ;
+
+							if ( oNode != oNode.parentNode.lastChild )
+								break ;
+
+							oNode = oNode.parentNode ;
+						}
 					}
 				}
