WebKit Bugzilla
Attachment 341168 Details for
Bug 185934
: [LFC] Implement FormattingContext::placeInFlowPositionedChildren
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185934-20180523211146.patch (text/plain), 4.96 KB, created by
zalan
on 2018-05-23 21:11:46 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-05-23 21:11:46 PDT
Size:
4.96 KB
patch
obsolete
>Subversion Revision: 232114 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index de80b8a5dc40242d8edc4b5cac4047d5fb164297..67fdf077cc1c4917b470b685fdb264bb421fd556 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2018-05-23 Zalan Bujtas <zalan@apple.com> >+ >+ [LFC] Implement FormattingContext::placeInFlowPositionedChildren >+ https://bugs.webkit.org/show_bug.cgi?id=185934 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * layout/FormattingContext.cpp: >+ (WebCore::Layout::FormattingContext::computeInFlowPositionedPosition const): >+ (WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const): >+ * layout/FormattingContext.h: >+ * layout/blockformatting/BlockFormattingContext.cpp: >+ (WebCore::Layout::BlockFormattingContext::layout const): >+ > 2018-05-23 Zalan Bujtas <zalan@apple.com> > > [LFC] Move sizing/positioning logic to helper classes >diff --git a/Source/WebCore/layout/FormattingContext.cpp b/Source/WebCore/layout/FormattingContext.cpp >index 35c6050f7d2c18b545a7228cecbe39473a3a3b2d..f9b9d2a1a966ec103a8003f008a31b7070e37193 100644 >--- a/Source/WebCore/layout/FormattingContext.cpp >+++ b/Source/WebCore/layout/FormattingContext.cpp >@@ -53,7 +53,7 @@ void FormattingContext::computeStaticPosition(LayoutContext&, const Box&, Displa > { > } > >-void FormattingContext::computeInFlowPositionedPosition(const Box&, Display::Box&) const >+void FormattingContext::computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const > { > } > >@@ -155,8 +155,17 @@ LayoutUnit FormattingContext::marginRight(const Box&) const > return 0; > } > >-void FormattingContext::placeInFlowPositionedChildren(const Container&) const >+void FormattingContext::placeInFlowPositionedChildren(LayoutContext& layoutContext, const Container& container) const > { >+ // If this container also establishes a formatting context, then positioning already has happend in that the formatting context. >+ if (container.establishesFormattingContext() && &container != &root()) >+ return; >+ >+ for (auto& layoutBox : childrenOfType<Box>(container)) { >+ if (!layoutBox.isInFlowPositioned()) >+ continue; >+ computeInFlowPositionedPosition(layoutContext, layoutBox, *layoutContext.displayBoxForLayoutBox(layoutBox)); >+ } > } > > void FormattingContext::layoutOutOfFlowDescendants(LayoutContext& layoutContext) const >diff --git a/Source/WebCore/layout/FormattingContext.h b/Source/WebCore/layout/FormattingContext.h >index c3d3c9c9a716c2f4cdb1350606bdeba8cd221f18..296dd31684853e9b331ac33a11c8c95fc33cefd2 100644 >--- a/Source/WebCore/layout/FormattingContext.h >+++ b/Source/WebCore/layout/FormattingContext.h >@@ -67,7 +67,7 @@ protected: > const Box& root() const { return *m_root; } > > virtual void computeStaticPosition(LayoutContext&, const Box&, Display::Box&) const; >- virtual void computeInFlowPositionedPosition(const Box&, Display::Box&) const; >+ virtual void computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const; > virtual void computeOutOfFlowPosition(LayoutContext&, const Box&, Display::Box&) const; > > virtual void computeWidth(LayoutContext&, const Box&, Display::Box&) const; >@@ -86,7 +86,7 @@ protected: > virtual LayoutUnit marginBottom(const Box&) const; > virtual LayoutUnit marginRight(const Box&) const; > >- void placeInFlowPositionedChildren(const Container&) const; >+ void placeInFlowPositionedChildren(LayoutContext&, const Container&) const; > void layoutOutOfFlowDescendants(LayoutContext&s) const; > > #ifndef NDEBUG >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >index bdec43d580d9ac1023be894f72cab1bec4714619..e1f67e72692e36244104e3b00cd471d65acb1688 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >@@ -101,7 +101,7 @@ void BlockFormattingContext::layout(LayoutContext& layoutContext, FormattingStat > continue; > auto& container = downcast<Container>(layoutBox); > // Move in-flow positioned children to their final position. >- placeInFlowPositionedChildren(container); >+ placeInFlowPositionedChildren(layoutContext, container); > if (auto* nextSibling = container.nextInFlowOrFloatingSibling()) { > layoutQueue.append(std::make_unique<LayoutPair>(LayoutPair {*nextSibling, layoutContext.createDisplayBox(*nextSibling)})); > break; >@@ -109,7 +109,7 @@ void BlockFormattingContext::layout(LayoutContext& layoutContext, FormattingStat > } > } > // Place the inflow positioned children. >- placeInFlowPositionedChildren(formattingRoot); >+ placeInFlowPositionedChildren(layoutContext, formattingRoot); > // And take care of out-of-flow boxes as the final step. > layoutOutOfFlowDescendants(layoutContext); > #ifndef NDEBUG
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185934
: 341168 |
341180