Index: Source/core/layout/LayoutObject.cpp |
diff --git a/Source/core/layout/LayoutObject.cpp b/Source/core/layout/LayoutObject.cpp |
index 7e9ab723a1c2e308924e62d2f579e4edf9eb9d4e..50ed1fff8f775fd5b99a70006c1b2bba4162cc82 100644 |
--- a/Source/core/layout/LayoutObject.cpp |
+++ b/Source/core/layout/LayoutObject.cpp |
@@ -742,6 +742,16 @@ static inline bool objectIsRelayoutBoundary(const LayoutObject* object) |
if (object->isTablePart()) |
return false; |
+ // Inside multicol it's generally problematic to allow relayout roots. The multicol container |
+ // itself may be scheduled for relayout as well (due to other changes that may have happened |
+ // since the previous layout pass), which might affect the column heights, which may affect how |
+ // this object breaks across columns). Spanners may also have been added or removed since the |
+ // previous layout pass, which is just another way of affecting the column heights (and the |
+ // number of rows). Instead of identifying cases where it's safe to allow relayout roots, just |
+ // disallow them inside multicol. |
+ if (object->isInsideFlowThread()) |
+ return false; |
+ |
return true; |
} |