- // Get the current blocks.\r
- var previousBlock = splitInfo.previousBlock,\r
- nextBlock = splitInfo.nextBlock;\r
+ // If we have both the previous and next blocks, it means that the\r
+ // boundaries were on separated blocks, or none of them where on the\r
+ // block limits (start/end).\r
+ if ( !isStartOfBlock && !isEndOfBlock )\r
+ {\r
+ // If the next block is an <li> with another list tree as the first\r
+ // child, we'll need to append a filler (<br>/NBSP) or the list item\r
+ // wouldn't be editable. (#1420)\r
+ if ( nextBlock.is( 'li' )\r
+ && ( node = nextBlock.getFirst( CKEDITOR.dom.walker.invisible( true ) ) )\r
+ && node.is && node.is( 'ul', 'ol' ) )\r
+ ( CKEDITOR.env.ie ? doc.createText( '\xa0' ) : doc.createElement( 'br' ) ).insertBefore( node );\r
+\r
+ // Move the selection to the end block.\r
+ if ( nextBlock )\r
+ range.moveToElementEditStart( nextBlock );\r
+ }\r
+ else\r
+ {\r
+ var newBlock,\r
+ newBlockDir;\r