Changeset 275126 in webkit
- Timestamp:
- Mar 26, 2021, 6:37:26 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
rendering/updating/RenderTreeBuilder.cpp (modified) (3 diffs)
-
rendering/updating/RenderTreeBuilder.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r275121 r275126 1 2021-03-26 Zalan Bujtas <zalan@apple.com> 2 3 [RenderTreeBuilder] No need to update the counters when the renderer is moved internally 4 https://bugs.webkit.org/show_bug.cgi?id=223801 5 <rdar://75835208> 6 7 Reviewed by Ryosuke Niwa. 8 9 When the renderer re-parenting is initiated by an "internal move" (e.g. anonymous block parent is not needed anymore so all the descendants 10 are moved "one level" up), we don't need to re-compute the counters. Their state should not be any different after this re-parenting. 11 12 * rendering/updating/RenderTreeBuilder.cpp: 13 (WebCore::RenderTreeBuilder::attachToRenderElementInternal): 14 (WebCore::RenderTreeBuilder::move): 15 * rendering/updating/RenderTreeBuilder.h: 16 1 17 2021-03-26 Chris Fleizach <cfleizach@apple.com> 2 18 -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
r275067 r275126 428 428 } 429 429 430 void RenderTreeBuilder::attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild )430 void RenderTreeBuilder::attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild, ReinsertAfterMove reinsertAfterMove) 431 431 { 432 432 RELEASE_ASSERT_WITH_MESSAGE(!parent.view().frameView().layoutContext().layoutState(), "Layout must not mutate render tree"); … … 452 452 multiColumnBuilder().multiColumnDescendantInserted(downcast<RenderMultiColumnFlow>(*fragmentedFlow), *newChild); 453 453 454 if (is<RenderElement>(*newChild)) 454 // FIXME: needsStateReset could probably be used for multicolumn as well. 455 auto needsStateReset = reinsertAfterMove == ReinsertAfterMove::No; 456 if (needsStateReset && is<RenderElement>(*newChild)) 455 457 RenderCounter::rendererSubtreeAttached(downcast<RenderElement>(*newChild)); 456 458 } … … 483 485 } else { 484 486 auto childToMove = detachFromRenderElement(from, child); 485 attachToRenderElementInternal(to, WTFMove(childToMove), beforeChild );487 attachToRenderElementInternal(to, WTFMove(childToMove), beforeChild, ReinsertAfterMove::Yes); 486 488 } 487 489 } -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h
r275067 r275126 71 71 void attachToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr); 72 72 void attachToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr); 73 void attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr); 73 enum class ReinsertAfterMove { No, Yes }; 74 void attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr, ReinsertAfterMove = ReinsertAfterMove::No); 74 75 75 76 enum class WillBeDestroyed { No, Yes };
Note:
See TracChangeset
for help on using the changeset viewer.