[webkit-changes] [WebKit/WebKit] 3637bd: [LFC] Perform nested float layout from IFC

Antti Koivisto noreply at github.com
Mon Aug 12 04:25:13 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3637bd1b58352db313aef075f91e59b27a693281
      https://github.com/WebKit/WebKit/commit/3637bd1b58352db313aef075f91e59b27a693281
  Author: Antti Koivisto <antti at apple.com>
  Date:   2024-08-12 (Mon, 12 Aug 2024)

  Changed paths:
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/layout/LayoutState.cpp
    M Source/WebCore/layout/LayoutState.h
    M Source/WebCore/layout/formattingContexts/FormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
    M Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp
    A Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp
    A Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.h
    M Source/WebCore/layout/layouttree/LayoutBox.cpp
    M Source/WebCore/layout/layouttree/LayoutBox.h
    M Source/WebCore/layout/layouttree/LayoutElementBox.cpp
    M Source/WebCore/layout/layouttree/LayoutElementBox.h
    M Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp
    M Source/WebCore/rendering/RenderBlockFlow.cpp
    M Source/WebCore/rendering/RenderView.cpp

  Log Message:
  -----------
  [LFC] Perform nested float layout from IFC
https://bugs.webkit.org/show_bug.cgi?id=277732
rdar://133374470

Reviewed by Alan Baradlay.

Add a mechanism to call back into render tree layout code from formatting context layout
and use it for IFC floats. This mechanism will be important for flex where we must invoke
nested layout from the middle.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::LayoutState):
(WebCore::Layout::LayoutState::layoutWithFormattingContextForBox):

Keep callback function in LayoutState.

* Source/WebCore/layout/LayoutState.h:
* Source/WebCore/layout/formattingContexts/FormattingContext.cpp:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
(WebCore::Layout::InlineFormattingContext::layoutFloatContentOnly):

Use the nested layout mechanism for floats.

(WebCore::Layout::InlineFormattingContext::geometryForBox const):
(WebCore::Layout::InlineFormattingContext::geometryForBox):
(WebCore::Layout::InlineFormattingContext::rebuildInlineItemListIfNeeded):
(WebCore::Layout::InlineFormattingContext::layoutWithFormattingContextForBox):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::tryPlacingFloatBox):

Use the nested layout mechanism for floats.

* Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp:
(WebCore::LayoutIntegration::elementAttributes):

Fix the node type for render tree tables show they establish a formatting context.

* Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.cpp: Added.
(WebCore::LayoutIntegration::layoutWithFormattingContextForBox):

Integration layout function that calls back into render tree and updates the geometry after.

* Source/WebCore/layout/integration/LayoutIntegrationFormattingContextLayout.h: Added.
* Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.cpp:
(WebCore::LayoutIntegration::BoxGeometryUpdater::BoxGeometryUpdater):
(WebCore::LayoutIntegration::BoxGeometryUpdater::setGeometriesForLayout):
(WebCore::LayoutIntegration::BoxGeometryUpdater::updateGeometryAfterLayout):

Add function for post-layout geometry update.

* Source/WebCore/layout/integration/inline/LayoutIntegrationBoxGeometryUpdater.h:
* Source/WebCore/layout/layouttree/LayoutElementBox.cpp:
(WebCore::Layout::ElementBox::rendererForIntegration const):
* Source/WebCore/layout/layouttree/LayoutElementBox.h:
* Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::printLayoutTreeForLiveDocuments):
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutModernLines):

Don't layout floats before entering IFC.

* Source/WebCore/rendering/RenderView.cpp:
(WebCore::RenderView::RenderView):

Establish the layout callback function.

Canonical link: https://commits.webkit.org/282112@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list