+ // We have already created a new list item. (#6849)\r
+ if ( node && node.is( 'li' ) )\r
+ newBlock = node;\r
+ else\r
+ {\r
+ newBlock = doc.createElement( blockTag );\r
+ if ( previousBlock && ( newBlockDir = previousBlock.getDirection() ) )\r
+ newBlock.setAttribute( 'dir', newBlockDir );\r
+ }\r
+ }\r
+ // Force the enter block unless we're talking of a list item.\r
+ else if ( forceMode && !newBlock.is( 'li' ) )\r
+ newBlock.renameNode( blockTag );\r
+\r
+ // Recreate the inline elements tree, which was available\r
+ // before hitting enter, so the same styles will be available in\r
+ // the new block.\r
+ var elementPath = splitInfo.elementPath;\r
+ if ( elementPath )\r
+ {\r
+ for ( var i = 0, len = elementPath.elements.length ; i < len ; i++ )\r
+ {\r
+ var element = elementPath.elements[ i ];\r
+\r
+ if ( element.equals( elementPath.block ) || element.equals( elementPath.blockLimit ) )\r
+ break;\r
+\r
+ if ( CKEDITOR.dtd.$removeEmpty[ element.getName() ] )\r
+ {\r
+ element = element.clone();\r
+ newBlock.moveChildren( element );\r
+ newBlock.append( element );\r
+ }\r
+ }\r
+ }\r
+\r
+ if ( !CKEDITOR.env.ie )\r
+ newBlock.appendBogus();\r
+\r
+ if ( !newBlock.getParent() )\r
+ range.insertNode( newBlock );\r
+\r
+ // This is tricky, but to make the new block visible correctly\r
+ // we must select it.\r
+ // The previousBlock check has been included because it may be\r
+ // empty if we have fixed a block-less space (like ENTER into an\r
+ // empty table cell).\r
+ if ( CKEDITOR.env.ie && isStartOfBlock && ( !isEndOfBlock || !previousBlock.getChildCount() ) )\r
+ {\r
+ // Move the selection to the new block.\r
+ range.moveToElementEditStart( isEndOfBlock ? previousBlock : newBlock );\r
+ range.select();\r