Title: [232152] trunk/Source/WebCore
- Revision
- 232152
- Author
- [email protected]
- Date
- 2018-05-24 08:01:11 -0700 (Thu, 24 May 2018)
Log Message
[LFC] Implement FormattingContext::placeInFlowPositionedChildren
https://bugs.webkit.org/show_bug.cgi?id=185934
Reviewed by Antti Koivisto.
* 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):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (232151 => 232152)
--- trunk/Source/WebCore/ChangeLog 2018-05-24 09:41:17 UTC (rev 232151)
+++ trunk/Source/WebCore/ChangeLog 2018-05-24 15:01:11 UTC (rev 232152)
@@ -1,3 +1,17 @@
+2018-05-24 Zalan Bujtas <[email protected]>
+
+ [LFC] Implement FormattingContext::placeInFlowPositionedChildren
+ https://bugs.webkit.org/show_bug.cgi?id=185934
+
+ Reviewed by Antti Koivisto.
+
+ * 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 Joseph Pecoraro <[email protected]>
Use ASCIILiteral with applicationBundleIsEqualTo in RuntimeApplicationChecksCocoa
Modified: trunk/Source/WebCore/layout/FormattingContext.cpp (232151 => 232152)
--- trunk/Source/WebCore/layout/FormattingContext.cpp 2018-05-24 09:41:17 UTC (rev 232151)
+++ trunk/Source/WebCore/layout/FormattingContext.cpp 2018-05-24 15:01:11 UTC (rev 232152)
@@ -53,7 +53,7 @@
{
}
-void FormattingContext::computeInFlowPositionedPosition(const Box&, Display::Box&) const
+void FormattingContext::computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const
{
}
@@ -155,8 +155,17 @@
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
Modified: trunk/Source/WebCore/layout/FormattingContext.h (232151 => 232152)
--- trunk/Source/WebCore/layout/FormattingContext.h 2018-05-24 09:41:17 UTC (rev 232151)
+++ trunk/Source/WebCore/layout/FormattingContext.h 2018-05-24 15:01:11 UTC (rev 232152)
@@ -67,7 +67,7 @@
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 @@
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
Modified: trunk/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp (232151 => 232152)
--- trunk/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp 2018-05-24 09:41:17 UTC (rev 232151)
+++ trunk/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp 2018-05-24 15:01:11 UTC (rev 232152)
@@ -101,7 +101,7 @@
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 @@
}
}
// 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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes