Changeset 95468 in webkit


Ignore:
Timestamp:
Sep 19, 2011, 1:48:42 PM (14 years ago)
Author:
inferno@chromium.org
Message:

Merge 95462 - Source/WebCore: Issues with merging ruby bases.
BUG=94809
Review URL: http://codereview.chromium.org/7941019

Location:
branches/chromium/874/Source/WebCore/rendering
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/chromium/874/Source/WebCore/rendering/RenderRubyBase.cpp

    r89304 r95468  
    6666}
    6767
    68 void RenderRubyBase::moveChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)
     68void RenderRubyBase::moveChildren(RenderRubyBase* toBase, RenderObject* beforeChild)
    6969{
    7070    // This function removes all children that are before (!) beforeChild
     
    7676    // Theoretically, in ruby bases, this can happen with only the first such a child,
    7777    // so it should be OK to just climb the tree.
    78     while (fromBeforeChild && fromBeforeChild->parent() != this)
    79         fromBeforeChild = fromBeforeChild->parent();
     78    while (beforeChild && beforeChild->parent() != this)
     79        beforeChild = beforeChild->parent();
    8080
    8181    if (childrenInline())
    82         moveInlineChildren(toBase, fromBeforeChild);
     82        moveInlineChildren(toBase, beforeChild);
    8383    else
    84         moveBlockChildren(toBase, fromBeforeChild);
     84        moveBlockChildren(toBase, beforeChild);
    8585
    8686    setNeedsLayoutAndPrefWidthsRecalc();
     
    8888}
    8989
    90 void RenderRubyBase::moveInlineChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)
     90void RenderRubyBase::moveInlineChildren(RenderRubyBase* toBase, RenderObject* beforeChild)
    9191{
    9292    RenderBlock* toBlock;
     
    107107    }
    108108    // Move our inline children into the target block we determined above.
    109     moveChildrenTo(toBlock, firstChild(), fromBeforeChild);
    110 }
    111 
    112 void RenderRubyBase::moveBlockChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)
     109    moveChildrenTo(toBlock, firstChild(), beforeChild);
     110}
     111
     112void RenderRubyBase::moveBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild)
    113113{
    114114    if (toBase->childrenInline()) {
    115115        // First check whether we move only wrapped inline objects.
    116         if (hasOnlyWrappedInlineChildren(fromBeforeChild)) {
     116        if (hasOnlyWrappedInlineChildren(beforeChild)) {
    117117            // The reason why the base is in block flow must be after beforeChild.
    118118            // We therefore can extract the inline objects and move them to toBase.
    119             for (RenderObject* child = firstChild(); child != fromBeforeChild; child = firstChild()) {
     119            for (RenderObject* child = firstChild(); child != beforeChild; child = firstChild()) {
    120120                if (child->isAnonymousBlock()) {
    121121                    RenderBlock* anonBlock = toRenderBlock(child);
     
    134134            toBase->makeChildrenNonInline();
    135135            // Move children, potentially collapsing anonymous block wrappers.
    136             mergeBlockChildren(toBase, fromBeforeChild);
     136            mergeBlockChildren(toBase, beforeChild);
    137137
    138138            // Now we need to check if the leftover children are all inline.
     
    158158        }
    159159    } else
    160         mergeBlockChildren(toBase, fromBeforeChild);
    161 }
    162 
    163 void RenderRubyBase::mergeBlockChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)
    164 {
    165     // This function removes all children that are before fromBeforeChild and appends them to toBase.
     160        mergeBlockChildren(toBase, beforeChild);
     161}
     162
     163void RenderRubyBase::mergeBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild)
     164{
     165    // This function removes all children that are before beforeChild and appends them to toBase.
    166166    ASSERT(!childrenInline());
    167167    ASSERT(toBase);
     
    169169
    170170    // Quick check whether we have anything to do, to simplify the following code.
    171     if (fromBeforeChild != firstChild())
     171    if (!firstChild())
    172172        return;
    173173
     
    175175    RenderObject* firstChildHere = firstChild();
    176176    RenderObject* lastChildThere = toBase->lastChild();
    177     if (firstChildHere && firstChildHere->isAnonymousBlock() && firstChildHere->childrenInline()
     177    if (firstChildHere->isAnonymousBlock() && firstChildHere->childrenInline()
    178178            && lastChildThere && lastChildThere->isAnonymousBlock() && lastChildThere->childrenInline()) {           
    179179        RenderBlock* anonBlockHere = toRenderBlock(firstChildHere);
     
    184184    }
    185185    // Move all remaining children normally.
    186     moveChildrenTo(toBase, firstChild(), fromBeforeChild);
     186    moveChildrenTo(toBase, firstChild(), beforeChild);
    187187}
    188188
  • branches/chromium/874/Source/WebCore/rendering/RenderRubyBase.h

    r79629 r95468  
    5555    bool hasOnlyWrappedInlineChildren(RenderObject* beforeChild = 0) const;
    5656
    57     void moveChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild = 0);
    58     void moveInlineChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild = 0);
    59     void moveBlockChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild = 0);
    60     void mergeBlockChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild = 0);
     57    void moveChildren(RenderRubyBase* toBase, RenderObject* beforeChild = 0);
     58    void moveInlineChildren(RenderRubyBase* toBase, RenderObject* beforeChild = 0);
     59    void moveBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild = 0);
     60    void mergeBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild = 0);
    6161
    6262    RenderRubyRun* rubyRun() const;
  • branches/chromium/874/Source/WebCore/rendering/RenderRubyRun.cpp

    r90302 r95468  
    168168                rightRun->moveChildTo(this, rightBase);
    169169                // The now empty ruby base will be removed below.
     170                ASSERT(!rubyBase()->firstChild());
    170171            }
    171172        }
Note: See TracChangeset for help on using the changeset viewer.