Index: core/dom/range.js
===================================================================
--- core/dom/range.js	(revision 6050)
+++ core/dom/range.js	(working copy)
@@ -36,6 +36,71 @@
 	{
 		range.optimizeBookmark();
 
+		var listNodeNames = { ol : 1, ul : 1 };
+
+		var topStartListParent;
+		var topEndListParent;
+		var startListFilteredParents = new Array();
+		var endListFilteredParents = new Array();
+
+		//check if range.startContainer is list item
+		if( range.startContainer.getAscendant('li',true) )
+		{
+			var startListParents = range.startContainer.getParents();
+			for ( var i = 0 ; i < startListParents.length ; i++ )
+			{
+				if ( startListParents[i].getName && listNodeNames[ startListParents[i].getName() ] )
+				{
+					if( !topStartListParent )
+						topStartListParent = startListParents[i];
+
+					startListFilteredParents.push( startListParents[i] );
+				}
+			}			
+			range.setStartBefore( topStartListParent );
+		}
+
+		//check if range.endContainer is list item
+		if( range.endContainer.getAscendant('li',true) )
+		{
+			var endListParents = range.endContainer.getParents();
+			for ( var i = 0 ; i < endListParents.length ; i++ )
+			{
+				if ( endListParents[i].getName && listNodeNames[ endListParents[i].getName() ] )
+				{
+					if( !topEndListParent )
+						topEndListParent = endListParents[i];
+
+					endListFilteredParents.push( endListParents[i] );
+				}
+			}
+			range.setEndAfter( topEndListParent );
+		}
+
+		if( topStartListParent && topEndListParent )
+		{
+			var commonParent;
+			for ( var i = 0 ; i < startListFilteredParents.length ; i++ ) //looking for common parent
+			{
+				for ( var j = 0 ; j < endListFilteredParents.length ; j++ )
+				{
+					if(startListFilteredParents[i].equals(endListFilteredParents[j]))
+						commonParent = startListFilteredParents[i];
+				}
+			}
+
+			if( commonParent ) //start range and end range contains in some common list
+			{
+				range.setStartBefore(commonParent);
+				range.setEndAfter(commonParent);
+			}
+			else
+			{
+				range.setStartBefore( topStartListParent );
+				range.setEndAfter( topEndListParent );
+			}
+		}
+
 		var startNode	= range.startContainer;
 		var endNode		= range.endContainer;
 
