Index: /CKEditor/branches/versions/3.4.x/CHANGES.html =================================================================== --- /CKEditor/branches/versions/3.4.x/CHANGES.html (revision 5669) +++ /CKEditor/branches/versions/3.4.x/CHANGES.html (revision 5670) @@ -46,4 +46,5 @@ Fixed issues:
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/domiterator/plugin.js =================================================================== --- /CKEditor/branches/versions/3.4.x/_source/plugins/domiterator/plugin.js (revision 5669) +++ /CKEditor/branches/versions/3.4.x/_source/plugins/domiterator/plugin.js (revision 5670) @@ -52,4 +52,8 @@ { range = this.range.clone(); + + // Shrink the range to exclude harmful "noises" (#4087, #4450, #5435). + range.shrink( CKEDITOR.NODE_ELEMENT, true ); + range.enlarge( this.forceBrBreak || !this.enlargeBr ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS ); @@ -213,24 +217,6 @@ // We have found a block boundary. Let's close the range and move out of the // loop. - if ( ( closeRange || isLast ) && range ) - { - var boundaryNodes = range.getBoundaryNodes(), - startPath = new CKEDITOR.dom.elementPath( range.startContainer ); - - // Drop the range if it only contains bookmark nodes, and is - // not because of the original collapsed range. (#4087,#4450) - if ( boundaryNodes.startNode.getParent().equals( startPath.blockLimit ) - && isBookmark( boundaryNodes.startNode ) && isBookmark( boundaryNodes.endNode ) ) - { - range = null; - this._.nextNode = null; - } - else + if ( isLast || ( closeRange && range ) ) break; - } - - if ( isLast ) - break; - } Index: /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js =================================================================== --- /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js (revision 5669) +++ /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js (revision 5670) @@ -439,15 +439,4 @@ { range = ranges.shift(); - - var boundaryNodes = range.getBoundaryNodes(), - startNode = boundaryNodes.startNode, - endNode = boundaryNodes.endNode; - - if ( startNode.type == CKEDITOR.NODE_ELEMENT && startNode.getName() == 'td' ) - range.setStartAt( boundaryNodes.startNode, CKEDITOR.POSITION_AFTER_START ); - - if ( endNode.type == CKEDITOR.NODE_ELEMENT && endNode.getName() == 'td' ) - range.setEndAt( boundaryNodes.endNode, CKEDITOR.POSITION_BEFORE_END ); - var iterator = range.createIterator(), block;