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

Reply via email to