WebKit Bugzilla
Attachment 346502 Details for
Bug 188312
: [LFC][BFC] Layout out-of-flow descendants only on the formatting context root.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188312-20180803102515.patch (text/plain), 3.16 KB, created by
zalan
on 2018-08-03 10:25:16 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-08-03 10:25:16 PDT
Size:
3.16 KB
patch
obsolete
>Subversion Revision: 234546 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 4e4c656edbe3dce65691cbf377555f806a4313ec..f581ef7f7de3238a21a0d3b5c54eecad8b2ffc0e 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2018-08-03 Zalan Bujtas <zalan@apple.com> >+ >+ [LFC][BFC] Layout out-of-flow descendants only on the formatting context root. >+ https://bugs.webkit.org/show_bug.cgi?id=188312 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Collect out-of-flow descendants on the formatting root container instead of the containing block and run layout on them on the root level. It's more efficient this way. >+ >+ * layout/blockformatting/BlockFormattingContext.cpp: >+ (WebCore::Layout::BlockFormattingContext::layout const): >+ * layout/layouttree/LayoutTreeBuilder.cpp: >+ (WebCore::Layout::TreeBuilder::createSubTree): >+ > 2018-08-03 Zalan Bujtas <zalan@apple.com> > > [LFC][Floating] Now that the document renderer belongs to "complicated cases", adjust viewport stretching. >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >index 07fe9481bdecb478e6b84cd6615aaa01db8195ec..8cd6aa984503a79638d9a9dd1ede1638ab388d11 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >@@ -117,7 +117,6 @@ void BlockFormattingContext::layout(LayoutContext& layoutContext, FormattingStat > auto& container = downcast<Container>(layoutBox); > // Move in-flow positioned children to their final position. > placeInFlowPositionedChildren(layoutContext, container); >- layoutOutOfFlowDescendants(layoutContext, container); > if (auto* nextSibling = container.nextInFlowOrFloatingSibling()) { > layoutQueue.append(std::make_unique<LayoutPair>(LayoutPair {*nextSibling, layoutContext.createDisplayBox(*nextSibling)})); > break; >diff --git a/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp b/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >index e62f3f6d7f9e6876d566ebcaccc4842a1abbe50f..1e31fe896036fbdef0a0258ff30f14aa5740da44 100644 >--- a/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >+++ b/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >@@ -110,7 +110,8 @@ void TreeBuilder::createSubTree(const RenderElement& rootRenderer, Container& ro > if (box->isOutOfFlowPositioned()) { > // Not efficient, but this is temporary anyway. > // Collect the out-of-flow descendants at the formatting root lever (as opposed to at the containing block level, though they might be the same). >- const_cast<Container&>(box->formattingContextRoot()).addOutOfFlowDescendant(*box); >+ auto& containingBlockFormattingContextRoot = box->containingBlock()->formattingContextRoot(); >+ const_cast<Container&>(containingBlockFormattingContextRoot).addOutOfFlowDescendant(*box); > } > if (is<RenderElement>(child)) > createSubTree(downcast<RenderElement>(child), downcast<Container>(*box));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
koivisto
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188312
: 346502