X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2Fpackagist%2Fludivine-ckeditor-component.git;a=blobdiff_plain;f=sources%2Fcore%2Fdom%2Felementpath.js;fp=sources%2Fcore%2Fdom%2Felementpath.js;h=dd50f103b50f5de54a9192b1ef48395f17702419;hp=1a3aed0924335c00b3e8faded9f832962e2e8974;hb=1794320dcfdfcd19572fb1676294f9853a6bbc20;hpb=7183f6a6a21ad9124e70c997e0168459f377a9f2 diff --git a/sources/core/dom/elementpath.js b/sources/core/dom/elementpath.js index 1a3aed0..dd50f10 100644 --- a/sources/core/dom/elementpath.js +++ b/sources/core/dom/elementpath.js @@ -57,6 +57,11 @@ // Backward compact. root = root || startNode.getDocument().getBody(); + // Assign root value if startNode is null (#424)(https://dev.ckeditor.com/ticket/17028). + if ( !e ) { + e = root; + } + do { if ( e.type == CKEDITOR.NODE_ELEMENT ) { elements.push( e ); @@ -84,7 +89,7 @@ block = e; if ( pathBlockLimitElements[ elementName ] ) { - // End level DIV is considered as the block, if no block is available. (#525) + // End level DIV is considered as the block, if no block is available. (http://dev.ckeditor.com/ticket/525) // But it must NOT be the root element (checked above). if ( !block && elementName == 'div' && !checkHasBlock( e ) ) block = e; @@ -181,7 +186,9 @@ CKEDITOR.dom.elementPath.prototype = { * @returns {CKEDITOR.dom.element} The first matched dom element or `null`. */ contains: function( query, excludeRoot, fromTop ) { - var evaluator; + var i = 0, + evaluator; + if ( typeof query == 'string' ) evaluator = function( node ) { return node.getName() == query; @@ -203,14 +210,21 @@ CKEDITOR.dom.elementPath.prototype = { var elements = this.elements, length = elements.length; - excludeRoot && length--; + + if ( excludeRoot ) { + if ( !fromTop ) { + length -= 1; + } else { + i += 1; + } + } if ( fromTop ) { elements = Array.prototype.slice.call( elements, 0 ); elements.reverse(); } - for ( var i = 0; i < length; i++ ) { + for ( ; i < length; i++ ) { if ( evaluator( elements[ i ] ) ) return elements[ i ]; }