node = null;\r
}\r
else\r
- node = ( guard ( node ) === false ) ?\r
+ node = ( guard ( node, true ) === false ) ?\r
null : node.getPreviousSourceNode( true, type, guard );\r
}\r
else\r
node = null;\r
}\r
else\r
- node = ( guard ( range.startContainer ) === false ) ?\r
+ node = ( guard ( range.startContainer, true ) === false ) ?\r
null : range.startContainer.getNextSourceNode( true, type, guard ) ;\r
}\r
}\r
*/\r
previous : function()\r
{\r
- return iterate.call( this, true );\r
+ return iterate.call( this, 1 );\r
},\r
\r
/**\r
*/\r
checkForward : function()\r
{\r
- return iterate.call( this, false, true ) !== false;\r
+ return iterate.call( this, 0, 1 ) !== false;\r
},\r
\r
/**\r
*/\r
checkBackward : function()\r
{\r
- return iterate.call( this, true, true ) !== false;\r
+ return iterate.call( this, 1, 1 ) !== false;\r
},\r
\r
/**\r
*/\r
lastBackward : function()\r
{\r
- return iterateToLast.call( this, true );\r
+ return iterateToLast.call( this, 1 );\r
},\r
\r
reset : function()\r
'table-column' : 1,\r
'table-cell' : 1,\r
'table-caption' : 1\r
- },\r
- blockBoundaryNodeNameMatch = { hr : 1 };\r
+ };\r
\r
CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames )\r
{\r
- var nodeNameMatches = CKEDITOR.tools.extend( {},\r
- blockBoundaryNodeNameMatch, customNodeNames || {} );\r
+ var nodeNameMatches = CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$block, customNodeNames || {} );\r
\r
- return blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] ||\r
- nodeNameMatches[ this.getName() ];\r
+ // Don't consider floated formatting as block boundary, fall back to dtd check in that case. (#6297)\r
+ return this.getComputedStyle( 'float' ) == 'none' && blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ]\r
+ || nodeNameMatches[ this.getName() ];\r
};\r
\r
CKEDITOR.dom.walker.blockBoundary = function( customNodeNames )\r
{\r
return this.blockBoundary( { br : 1 } );\r
};\r
- /**\r
- * Whether the node is a bookmark node's inner text node.\r
- */\r
- CKEDITOR.dom.walker.bookmarkContents = function( node )\r
- {\r
- },\r
\r
/**\r
* Whether the to-be-evaluated node is a bookmark node OR bookmark node\r
{\r
return ( node && node.getName\r
&& node.getName() == 'span'\r
- && node.hasAttribute('_fck_bookmark') );\r
+ && node.hasAttribute( '_cke_bookmark' ) );\r
}\r
\r
return function( node )\r
&& isBookmarkNode( parent ) );\r
// Is bookmark node?\r
isBookmark = contentOnly ? isBookmark : isBookmark || isBookmarkNode( node );\r
- return isReject ^ isBookmark;\r
+ return !! ( isReject ^ isBookmark );\r
};\r
};\r
\r
{\r
var isWhitespace = node && ( node.type == CKEDITOR.NODE_TEXT )\r
&& !CKEDITOR.tools.trim( node.getText() );\r
- return isReject ^ isWhitespace;\r
+ return !! ( isReject ^ isWhitespace );\r
};\r
};\r
\r
// 'offsetHeight' instead of 'offsetWidth' for properly excluding\r
// all sorts of empty paragraph, e.g. <br />.\r
var isInvisible = whitespace( node ) || node.is && !node.$.offsetHeight;\r
- return isReject ^ isInvisible;\r
+ return !! ( isReject ^ isInvisible );\r
};\r
};\r
\r
var tailNbspRegex = /^[\t\r\n ]*(?: |\xa0)$/,\r
- isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),\r
- isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true ),\r
+ isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( 1 ),\r
+ isNotBookmark = CKEDITOR.dom.walker.bookmark( 0, 1 ),\r
fillerEvaluator = function( element )\r
{\r
return isNotBookmark( element ) && isNotWhitespaces( element );\r
};\r
\r
// Check if there's a filler node at the end of an element, and return it.\r
- CKEDITOR.dom.element.prototype.getBogus = function ()\r
+ CKEDITOR.dom.element.prototype.getBogus = function()\r
{\r
var tail = this.getLast( fillerEvaluator );\r
if ( tail && ( !CKEDITOR.env.ie ? tail.is && tail.is( 'br' )\r