+ // Avoid selection anchors under list root.\r
+ // <ul>[<li>...</li>]</ul> => <ul><li>[...]</li></ul>\r
+ if ( nearestListBlock && startContainer.type == CKEDITOR.NODE_ELEMENT\r
+ && startContainer.getName() in listNodeNames )\r
+ {\r
+ var walker = new CKEDITOR.dom.walker( range );\r
+ walker.evaluator = isListItem;\r
+ range.startContainer = walker.next();\r
+ }\r
+\r
+ if ( nearestListBlock && endContainer.type == CKEDITOR.NODE_ELEMENT\r
+ && endContainer.getName() in listNodeNames )\r
+ {\r
+ walker = new CKEDITOR.dom.walker( range );\r
+ walker.evaluator = isListItem;\r
+ range.endContainer = walker.previous();\r
+ }\r
+\r
+ var bookmarks = selection.createBookmarks( true );\r
+\r
+ if ( nearestListBlock )\r
+ {\r
+ var firstListItem = nearestListBlock.getFirst( function( node )\r
+ {\r
+ return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );\r
+ }),\r
+ rangeStart = range.startContainer,\r
+ indentWholeList = firstListItem.equals( rangeStart ) || firstListItem.contains( rangeStart );\r
+\r
+ // Indent the entire list if cursor is inside the first list item. (#3893)\r
+ if ( !( indentWholeList && indentElement.call( this, editor, nearestListBlock ) ) )\r