(function()\r
{\r
\r
- var iterator = function( range )\r
+ function iterator( range )\r
{\r
if ( arguments.length < 1 )\r
return;\r
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
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