Title: [274212] trunk/Source/WebCore
Revision
274212
Author
[email protected]
Date
2021-03-10 06:53:56 -0800 (Wed, 10 Mar 2021)

Log Message

[Multi-column] Adjust the flow state of the descendants when going from not-inside-flow to inside-flow
https://bugs.webkit.org/show_bug.cgi?id=222987

Reviewed by Antti Koivisto.

Sometimes the flow state could change even when the renderer stays out-of-flow (e.g when going from fixed to absolute and
the (new)containing block is inside a multi-column flow).

* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (274211 => 274212)


--- trunk/Source/WebCore/ChangeLog	2021-03-10 14:46:02 UTC (rev 274211)
+++ trunk/Source/WebCore/ChangeLog	2021-03-10 14:53:56 UTC (rev 274212)
@@ -1,5 +1,18 @@
 2021-03-10  Zalan Bujtas  <[email protected]>
 
+        [Multi-column] Adjust the flow state of the descendants when going from not-inside-flow to inside-flow
+        https://bugs.webkit.org/show_bug.cgi?id=222987
+
+        Reviewed by Antti Koivisto.
+
+        Sometimes the flow state could change even when the renderer stays out-of-flow (e.g when going from fixed to absolute and
+        the (new)containing block is inside a multi-column flow).
+
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):
+
+2021-03-10  Zalan Bujtas  <[email protected]>
+
         Clean up the text boxes when the associated text renderer is detached from the tree
         https://bugs.webkit.org/show_bug.cgi?id=223009
         <rdar://74788950>

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (274211 => 274212)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2021-03-10 14:46:02 UTC (rev 274211)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2021-03-10 14:53:56 UTC (rev 274212)
@@ -599,7 +599,17 @@
     // Out of flow children of RenderMultiColumnFlow are not really part of the multicolumn flow. We need to ensure that changes in positioning like this
     // trigger insertions into the multicolumn flow.
     if (auto* enclosingFragmentedFlow = parent.enclosingFragmentedFlow(); is<RenderMultiColumnFlow>(enclosingFragmentedFlow)) {
-        auto movingIntoMulticolumn = wasOutOfFlowPositioned && !isOutOfFlowPositioned;
+        auto movingIntoMulticolumn = [&] {
+            if (wasOutOfFlowPositioned && !isOutOfFlowPositioned)
+                return true;
+            if (auto* containingBlock = renderer.containingBlock(); containingBlock && isOutOfFlowPositioned) {
+                // Sometimes the flow state could change even when the renderer stays out-of-flow (e.g when going from fixed to absolute and
+                // the containing block is inside a multi-column flow).
+                return containingBlock->fragmentedFlowState() == RenderObject::InsideInFragmentedFlow
+                    && renderer.fragmentedFlowState() == RenderObject::NotInsideFragmentedFlow;
+            }
+            return false;
+        }();
         if (movingIntoMulticolumn) {
             multiColumnBuilder().multiColumnDescendantInserted(downcast<RenderMultiColumnFlow>(*enclosingFragmentedFlow), renderer);
             renderer.initializeFragmentedFlowStateOnInsertion();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to