X-Git-Url: https://jasonwoof.com/gitweb/?p=ckeditor.git;a=blobdiff_plain;f=_source%2Fplugins%2Fenterkey%2Fplugin.js;h=1a79c516db4e03c42ebe6dc82043f032638899cd;hp=14db3da69a3e5895140f9a1a74cebdf6a8d24a18;hb=4e90e78dc97789709ee7404359a5517540c27553;hpb=8f6c203fdaa543c3bca40baea6ae4ddcdf1a77f5 diff --git a/_source/plugins/enterkey/plugin.js b/_source/plugins/enterkey/plugin.js index 14db3da..1a79c51 100644 --- a/_source/plugins/enterkey/plugin.js +++ b/_source/plugins/enterkey/plugin.js @@ -75,7 +75,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) ) { previousBlock.breakParent( node ); - range.moveToElementEditStart( previousBlock.getNext() ); + node = previousBlock.getNext(); + range.moveToElementEditStart( node ); previousBlock.move( previousBlock.getPrevious() ); } @@ -110,6 +111,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { // Otherwise, duplicate the previous block. newBlock = previousBlock.clone(); + // Value attribute of list item should not be duplicated (#7330). + newBlock.is( 'li' ) && newBlock.removeAttribute( 'value' ); } } else if ( nextBlock ) @@ -117,9 +120,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( !newBlock ) { - newBlock = doc.createElement( blockTag ); - if ( previousBlock && ( newBlockDir = previousBlock.getDirection() ) ) - newBlock.setAttribute( 'dir', newBlockDir ); + // We have already created a new list item. (#6849) + if ( node && node.is( 'li' ) ) + newBlock = node; + else + { + newBlock = doc.createElement( blockTag ); + if ( previousBlock && ( newBlockDir = previousBlock.getDirection() ) ) + newBlock.setAttribute( 'dir', newBlockDir ); + } } // Force the enter block unless we're talking of a list item. else if ( forceMode && !newBlock.is( 'li' ) ) @@ -150,7 +159,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( !CKEDITOR.env.ie ) newBlock.appendBogus(); - range.insertNode( newBlock ); + if ( !newBlock.getParent() ) + range.insertNode( newBlock ); // This is tricky, but to make the new block visible correctly // we must select it. @@ -265,29 +275,27 @@ For licensing, see LICENSE.html or http://ckeditor.com/license range.deleteContents(); range.insertNode( lineBreak ); - // A text node is required by Gecko only to make the cursor blink. - // We need some text inside of it, so the bogus
is properly - // created. - if ( !CKEDITOR.env.ie ) - doc.createText( '\ufeff' ).insertAfter( lineBreak ); - - // If we are at the end of a block, we must be sure the bogus node is available in that block. - if ( isEndOfBlock && !CKEDITOR.env.ie ) - lineBreak.getParent().appendBogus(); - - // Now we can remove the text node contents, so the caret doesn't - // stop on it. - if ( !CKEDITOR.env.ie ) - lineBreak.getNext().$.nodeValue = ''; // IE has different behavior regarding position. if ( CKEDITOR.env.ie ) range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END ); else + { + // A text node is required by Gecko only to make the cursor blink. + // We need some text inside of it, so the bogus
is properly + // created. + doc.createText( '\ufeff' ).insertAfter( lineBreak ); + + // If we are at the end of a block, we must be sure the bogus node is available in that block. + if ( isEndOfBlock ) + lineBreak.getParent().appendBogus(); + + // Now we can remove the text node contents, so the caret doesn't + // stop on it. + lineBreak.getNext().$.nodeValue = ''; + range.setStartAt( lineBreak.getNext(), CKEDITOR.POSITION_AFTER_START ); - // Scroll into view, for non IE. - if ( !CKEDITOR.env.ie ) - { + // Scroll into view, for non IE. var dummy = null; // BR is not positioned in Opera and Webkit. @@ -363,7 +371,6 @@ For licensing, see LICENSE.html or http://ckeditor.com/license return true; } - function getRange( editor ) { // Get the selection ranges.