Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1fd29243bf23eab3aba9c2199563e3091d6315f9
https://github.com/WebKit/WebKit/commit/1fd29243bf23eab3aba9c2199563e3091d6315f9
Author: Alan Baradlay <[email protected]>
Date: 2025-09-02 (Tue, 02 Sep 2025)
Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/page/LocalFrameViewLayoutContext.cpp
M Source/WebCore/page/LocalFrameViewLayoutContext.h
A Source/WebCore/rendering/LayoutScope.cpp
A Source/WebCore/rendering/LayoutScope.h
M Source/WebCore/rendering/RenderBlock.cpp
M Source/WebCore/rendering/RenderBlockFlow.cpp
M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp
M Source/WebCore/rendering/RenderFlexibleBox.cpp
M Source/WebCore/rendering/RenderGrid.cpp
M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
M Source/WebCore/rendering/RenderTableCell.cpp
M Source/WebCore/rendering/RenderTextControlSingleLine.cpp
M Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp
M Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp
M Source/WebCore/rendering/mathml/RenderMathMLMath.cpp
M Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp
M Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp
M Source/WebCore/rendering/mathml/RenderMathMLPadded.cpp
M Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp
M Source/WebCore/rendering/mathml/RenderMathMLRow.cpp
M Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp
M Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp
M Source/WebCore/rendering/mathml/RenderMathMLToken.cpp
M Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp
Log Message:
-----------
Let's add LayoutScope to consolidate post-layout activities
https://bugs.webkit.org/show_bug.cgi?id=297992
Reviewed by Simon Fraser.
There are many copies of the same set of function calls across various
::layout() and ::layoutFoo() functions.
computeOverflow();
updateDescendantTransformsAfterLayout();
updateLayerTransform();
updateScrollInfoAfterLayout();
clearNeedsLayout();
We call these functions soon after we finished computing geometry for _this_
renderer.
Instead of copy-pasting this set in every layout function, lets use a stack
object and run them as we go out of scope.
1. for now only move clearNeedsLayout() in LayoutScope's d'tor and use it for
layoutBlock().
2. layoutBlock() is only supposed to be called from RenderBlock's layout(), but
some renderers call it directly (which seems like taking shortcuts)
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:
(WebCore::LayoutFrameScope::LayoutFrameScope): Rename LayoutScope to
LayoutFrameScope to avoid name clashes.
(WebCore::LayoutFrameScope::~LayoutFrameScope):
(WebCore::LocalFrameViewLayoutContext::performLayout):
(WebCore::LayoutScope::LayoutScope): Deleted.
(WebCore::LayoutScope::~LayoutScope): Deleted.
* Source/WebCore/page/LocalFrameViewLayoutContext.h:
* Source/WebCore/rendering/LayoutScope.cpp: Added.
(WebCore::LayoutScope::LayoutScope):
(WebCore::LayoutScope::~LayoutScope):
* Source/WebCore/rendering/LayoutScope.h: Added.
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::layout):
(WebCore::RenderBlock::layoutBlock):
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutBlockWithNoChildren):
(WebCore::RenderBlockFlow::layoutBlock):
* Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::RenderDeprecatedFlexibleBox::layoutBlock):
(WebCore::RenderDeprecatedFlexibleBox::layoutSingleClampedFlexItem):
* Source/WebCore/rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutBlock):
* Source/WebCore/rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutGrid):
(WebCore::RenderGrid::layoutMasonry):
* Source/WebCore/rendering/RenderLayerScrollableArea.cpp:
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
* Source/WebCore/rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::layout):
* Source/WebCore/rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::layout):
* Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp:
(WebCore::RenderMathMLBlock::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLMath.cpp:
(WebCore::RenderMathMLMath::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp:
(WebCore::RenderMathMLMenclose::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLPadded.cpp:
(WebCore::RenderMathMLPadded::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp:
(WebCore::RenderMathMLRoot::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLRow.cpp:
(WebCore::RenderMathMLRow::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:
(WebCore::RenderMathMLScripts::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp:
(WebCore::RenderMathMLSpace::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLToken.cpp:
(WebCore::RenderMathMLToken::layoutBlock):
* Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::RenderMathMLUnderOver::layoutBlock):
Canonical link: https://commits.webkit.org/299477@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes