]> git.immae.eu Git - perso/Immae/Projets/packagist/ludivine-ckeditor-component.git/blobdiff - sources/core/dom/elementpath.js
Update to 4.7.3
[perso/Immae/Projets/packagist/ludivine-ckeditor-component.git] / sources / core / dom / elementpath.js
index 1a3aed0924335c00b3e8faded9f832962e2e8974..dd50f103b50f5de54a9192b1ef48395f17702419 100644 (file)
                // 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 ];
                }