[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