Index: third_party/WebKit/Source/core/layout/ColumnBalancer.cpp |
diff --git a/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp b/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp |
index 3de1e264d6c82d0d4b2cccf9a02f19e79ed3eb83..ffabb59fe7cd7ae8e63a0171016ee8bd4d6701a0 100644 |
--- a/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp |
+++ b/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp |
@@ -6,6 +6,7 @@ |
#include "core/layout/ColumnBalancer.h" |
+#include "core/layout/LayoutMultiColumnFlowThread.h" |
#include "core/layout/LayoutMultiColumnSet.h" |
namespace blink { |
@@ -273,6 +274,19 @@ void MinimumSpaceShortageFinder::examineBoxAfterEntering(const LayoutBox& box) |
recordSpaceShortage(spaceUsedInLastColumn); |
} |
} |
+ |
+ // If this is an inner multicol container, look for space shortage inside it. |
+ if (!box.isLayoutBlockFlow()) |
+ return; |
+ LayoutMultiColumnFlowThread* flowThread = toLayoutBlockFlow(box).multiColumnFlowThread(); |
+ if (!flowThread) |
+ return; |
+ for (const LayoutMultiColumnSet* columnSet = flowThread->firstMultiColumnSet(); columnSet; columnSet = columnSet->nextSiblingMultiColumnSet()) { |
+ for (const MultiColumnFragmentainerGroup& row : columnSet->fragmentainerGroups()) { |
+ MinimumSpaceShortageFinder innerFinder(row); |
+ recordSpaceShortage(innerFinder.minimumSpaceShortage()); |
+ } |
+ } |
} |
void MinimumSpaceShortageFinder::examineBoxBeforeLeaving(const LayoutBox& box) |