// Get the range for the current selection.\r
range = range || getRange( editor );\r
\r
+ // We may not have valid ranges to work on, like when inside a\r
+ // contenteditable=false element.\r
+ if ( !range )\r
+ return;\r
+\r
var doc = range.document;\r
\r
// Exit the list when we're inside an empty list item block. (#5376)\r
if ( node.is( 'li' ) )\r
{\r
nextBlock.breakParent( node );\r
- nextBlock.move( nextBlock.getNext(), true );\r
+ nextBlock.move( nextBlock.getNext(), 1 );\r
}\r
}\r
else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) )\r
// Get the range for the current selection.\r
range = range || getRange( editor );\r
\r
+ // We may not have valid ranges to work on, like when inside a\r
+ // contenteditable=false element.\r
+ if ( !range )\r
+ return;\r
+\r
var doc = range.document;\r
\r
// Determine the block element to be used.\r
return true;\r
}\r
else\r
- return enter( editor, editor.config.shiftEnterMode, true );\r
+ return enter( editor, editor.config.shiftEnterMode, 1 );\r
}\r
\r
function enter( editor, mode, forceMode )\r
setTimeout( function()\r
{\r
editor.fire( 'saveSnapshot' ); // Save undo step.\r
- if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', true ) )\r
+ if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', 1 ) )\r
enterBr( editor, mode, null, forceMode );\r
else\r
enterBlock( editor, mode, null, forceMode );\r
function getRange( editor )\r
{\r
// Get the selection ranges.\r
- var ranges = editor.getSelection().getRanges();\r
+ var ranges = editor.getSelection().getRanges( true );\r
\r
// Delete the contents of all ranges except the first one.\r
for ( var i = ranges.length - 1 ; i > 0 ; i-- )\r