JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0.2
[ckeditor.git] / _source / plugins / domiterator / plugin.js
index a7a8e4d..ded0a32 100644 (file)
@@ -12,7 +12,7 @@ CKEDITOR.plugins.add( 'domiterator' );
 (function()\r
 {\r
 \r
-       var iterator = function( range )\r
+       function iterator( range )\r
        {\r
                if ( arguments.length < 1 )\r
                        return;\r
@@ -25,9 +25,10 @@ CKEDITOR.plugins.add( 'domiterator' );
                this.enforceRealBlocks = false;\r
 \r
                this._ || ( this._ = {} );\r
-       },\r
-               beginWhitespaceRegex = /^[\r\n\t ]+$/;\r
+       }\r
 \r
+       var beginWhitespaceRegex = /^[\r\n\t ]+$/,\r
+               isBookmark = CKEDITOR.dom.walker.bookmark();\r
 \r
        iterator.prototype = {\r
                getNextParagraph : function( blockTag )\r
@@ -212,14 +213,12 @@ CKEDITOR.plugins.add( 'domiterator' );
                                if ( ( closeRange || isLast ) && range )\r
                                {\r
                                        var boundaryNodes = range.getBoundaryNodes(),\r
-                                               startPath = new CKEDITOR.dom.elementPath( range.startContainer ),\r
-                                               endPath = new CKEDITOR.dom.elementPath( range.endContainer );\r
-\r
-                                       // Drop the range if it only contains bookmark nodes.(#4087)\r
-                                       if ( boundaryNodes.startNode.equals( boundaryNodes.endNode )\r
-                                               && boundaryNodes.startNode.getParent().equals( startPath.blockLimit )\r
-                                               && boundaryNodes.startNode.type == CKEDITOR.NODE_ELEMENT\r
-                                               && boundaryNodes.startNode.getAttribute( '_fck_bookmark' ) )\r
+                                               startPath = new CKEDITOR.dom.elementPath( range.startContainer );\r
+\r
+                                       // Drop the range if it only contains bookmark nodes, and is\r
+                                       // not because of the original collapsed range. (#4087,#4450)\r
+                                       if ( boundaryNodes.startNode.getParent().equals( startPath.blockLimit )\r
+                                                && isBookmark( boundaryNodes.startNode ) && isBookmark( boundaryNodes.endNode ) )\r
                                        {\r
                                                range = null;\r
                                                this._.nextNode = null;\r