Changeset 6629


Ignore:
Timestamp:
04/01/2011 10:21:31 AM (4 years ago)
Author:
garry.yao
Message:

#7470: Fixing regression from [6561] where unclosed elements are not added properly after fixing body.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/_source/core/htmlparser/fragment.js

    r6561 r6629  
    113113 
    114114                /* 
    115                 * Beside of simply append specified element to target, it also takes 
     115                * Beside of simply append specified element to target, this function also takes 
    116116                * care of other dirty lifts like forcing block in body, trimming spaces at 
    117117                * the block boundaries etc. 
    118118                * 
    119                 * Note: This function should NOT change the "currentNode" global unless 
    120                 * there's a return point node specified on the element. 
     119                * @param {Element} element  The element to be added as the last child of {@link target}. 
     120                * @param {Element} target The parent element to relieve the new node. 
     121                * @param {Boolean} [moveCurrent=false] Don't change the "currentNode" global unless 
     122                * there's a return point node specified on the element, otherwise move current onto {@link target} node. 
    121123                 */ 
    122                 function addElement( element, target ) 
     124                function addElement( element, target, moveCurrent ) 
    123125                { 
    124126                        // Ignore any element that has already been added. 
     
    151153 
    152154                                        // The new target now is the <p>. 
    153                                         target = currentNode; 
     155                                        element.returnPoint = target = currentNode; 
    154156                                } 
    155157                        } 
     
    180182                        } 
    181183                        else 
    182                                 currentNode = savedCurrent; 
     184                                currentNode = moveCurrent ? target : savedCurrent; 
    183185                } 
    184186 
     
    259261                                                // current one and append the new one to the parent. 
    260262                                                if ( currentNode.parent ) 
    261                                                 { 
    262                                                         addElement( currentNode, currentNode.parent ); 
    263                                                         currentNode = currentNode.parent; 
    264                                                 } 
     263                                                        addElement( currentNode, currentNode.parent, 1 ); 
    265264                                                // We've tried our best to fix the embarrassment here, while 
    266265                                                // this element still doesn't find it's parent, mark it as 
     
    400399                sendPendingBRs( !CKEDITOR.env.ie && 1 ); 
    401400 
    402                 // Close all pending nodes. 
     401                // Close all pending nodes, make sure return point is properly restored. 
    403402                while ( currentNode != fragment ) 
    404                 { 
    405                         // Make sure return point is properly restored. 
    406                         var returnPoint = currentNode.returnPoint; 
    407                         addElement( currentNode, currentNode.parent ); 
    408                         currentNode = returnPoint || currentNode.parent; 
    409                 } 
     403                        addElement( currentNode, currentNode.parent, 1 ); 
    410404 
    411405                return fragment; 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy