Changeset 95468 in webkit
- Timestamp:
- Sep 19, 2011, 1:48:42 PM (14 years ago)
- Location:
- branches/chromium/874/Source/WebCore/rendering
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/chromium/874/Source/WebCore/rendering/RenderRubyBase.cpp
r89304 r95468 66 66 } 67 67 68 void RenderRubyBase::moveChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)68 void RenderRubyBase::moveChildren(RenderRubyBase* toBase, RenderObject* beforeChild) 69 69 { 70 70 // This function removes all children that are before (!) beforeChild … … 76 76 // Theoretically, in ruby bases, this can happen with only the first such a child, 77 77 // 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(); 80 80 81 81 if (childrenInline()) 82 moveInlineChildren(toBase, fromBeforeChild);82 moveInlineChildren(toBase, beforeChild); 83 83 else 84 moveBlockChildren(toBase, fromBeforeChild);84 moveBlockChildren(toBase, beforeChild); 85 85 86 86 setNeedsLayoutAndPrefWidthsRecalc(); … … 88 88 } 89 89 90 void RenderRubyBase::moveInlineChildren(RenderRubyBase* toBase, RenderObject* fromBeforeChild)90 void RenderRubyBase::moveInlineChildren(RenderRubyBase* toBase, RenderObject* beforeChild) 91 91 { 92 92 RenderBlock* toBlock; … … 107 107 } 108 108 // 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 112 void RenderRubyBase::moveBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild) 113 113 { 114 114 if (toBase->childrenInline()) { 115 115 // First check whether we move only wrapped inline objects. 116 if (hasOnlyWrappedInlineChildren( fromBeforeChild)) {116 if (hasOnlyWrappedInlineChildren(beforeChild)) { 117 117 // The reason why the base is in block flow must be after beforeChild. 118 118 // 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()) { 120 120 if (child->isAnonymousBlock()) { 121 121 RenderBlock* anonBlock = toRenderBlock(child); … … 134 134 toBase->makeChildrenNonInline(); 135 135 // Move children, potentially collapsing anonymous block wrappers. 136 mergeBlockChildren(toBase, fromBeforeChild);136 mergeBlockChildren(toBase, beforeChild); 137 137 138 138 // Now we need to check if the leftover children are all inline. … … 158 158 } 159 159 } 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 163 void RenderRubyBase::mergeBlockChildren(RenderRubyBase* toBase, RenderObject* beforeChild) 164 { 165 // This function removes all children that are before beforeChild and appends them to toBase. 166 166 ASSERT(!childrenInline()); 167 167 ASSERT(toBase); … … 169 169 170 170 // Quick check whether we have anything to do, to simplify the following code. 171 if ( fromBeforeChild !=firstChild())171 if (!firstChild()) 172 172 return; 173 173 … … 175 175 RenderObject* firstChildHere = firstChild(); 176 176 RenderObject* lastChildThere = toBase->lastChild(); 177 if (firstChildHere && firstChildHere->isAnonymousBlock() && firstChildHere->childrenInline()177 if (firstChildHere->isAnonymousBlock() && firstChildHere->childrenInline() 178 178 && lastChildThere && lastChildThere->isAnonymousBlock() && lastChildThere->childrenInline()) { 179 179 RenderBlock* anonBlockHere = toRenderBlock(firstChildHere); … … 184 184 } 185 185 // Move all remaining children normally. 186 moveChildrenTo(toBase, firstChild(), fromBeforeChild);186 moveChildrenTo(toBase, firstChild(), beforeChild); 187 187 } 188 188 -
branches/chromium/874/Source/WebCore/rendering/RenderRubyBase.h
r79629 r95468 55 55 bool hasOnlyWrappedInlineChildren(RenderObject* beforeChild = 0) const; 56 56 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); 61 61 62 62 RenderRubyRun* rubyRun() const; -
branches/chromium/874/Source/WebCore/rendering/RenderRubyRun.cpp
r90302 r95468 168 168 rightRun->moveChildTo(this, rightBase); 169 169 // The now empty ruby base will be removed below. 170 ASSERT(!rubyBase()->firstChild()); 170 171 } 171 172 }
Note:
See TracChangeset
for help on using the changeset viewer.