Index: third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp |
index 0b9ed3a64619e1c88b37719433a8a27b8f55e6d1..ef5e7ef73500ec4e87ad29e855e5e06d38a1f46f 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.cpp |
@@ -97,6 +97,35 @@ bool LayoutMultiColumnSet::isPageLogicalHeightKnown() const |
return firstFragmentainerGroup().logicalHeight(); |
} |
+LayoutUnit LayoutMultiColumnSet::nextLogicalTopForUnbreakableContent(LayoutUnit flowThreadOffset, LayoutUnit contentLogicalHeight) const |
+{ |
+ ASSERT(pageLogicalTopForOffset(flowThreadOffset) == flowThreadOffset); // That's all we bother to handle. |
leviw_travelin_and_unemployed
2015/11/25 19:26:34
Nit: This comment doesn't help me.
mstensho (USE GERRIT)
2015/11/25 20:08:17
Removed.
"|flowThreadOffset| is expected to be at
|
+ LayoutMultiColumnFlowThread* enclosingFlowThread = multiColumnFlowThread()->enclosingFlowThread(); |
+ if (!enclosingFlowThread) { |
+ // If there's no enclosing fragmentation context, there'll ever be only one row, and all |
+ // columns there will have the same height. |
+ return flowThreadOffset; |
+ } |
+ |
+ if (pageLogicalHeightForOffset(flowThreadOffset) >= contentLogicalHeight) |
leviw_travelin_and_unemployed
2015/11/25 19:26:34
This makes sense, but it appears in the current co
mstensho (USE GERRIT)
2015/11/25 20:08:17
Right. No need to be that robust. Let's add an ass
leviw_travelin_and_unemployed
2015/11/25 22:00:49
I was hoping you'd say that ;)
|
+ return flowThreadOffset; |
+ |
+ // There's a likelihood for subsequent rows to be taller than the first one. |
+ // TODO(mstensho): if we're doubly nested (e.g. multicol in multicol in multicol), we need to |
+ // look beyond the first row here. |
leviw_travelin_and_unemployed
2015/11/25 19:26:34
http://i.imgur.com/EqQOTR9.jpg
mstensho (USE GERRIT)
2015/11/25 20:08:17
http://renholdsnytt.no/var/askmedia/storage/images
leviw_travelin_and_unemployed
2015/11/25 22:00:49
HA!
|
+ const MultiColumnFragmentainerGroup& firstRow = firstFragmentainerGroup(); |
+ LayoutUnit firstRowLogicalBottomInFlowThread = firstRow.logicalTopInFlowThread() + firstRow.logicalHeight() * usedColumnCount(); |
+ if (flowThreadOffset >= firstRowLogicalBottomInFlowThread) |
+ return flowThreadOffset; // We're not in the first row. Give up. |
+ LayoutUnit newLogicalHeight = enclosingFlowThread->pageLogicalHeightForOffset(firstRowLogicalBottomInFlowThread); |
+ if (contentLogicalHeight > newLogicalHeight) { |
+ // The next outer column or page doesn't have enough space either. Give up and stay where |
+ // we are. |
+ return flowThreadOffset; |
+ } |
+ return firstRowLogicalBottomInFlowThread; |
+} |
+ |
LayoutMultiColumnSet* LayoutMultiColumnSet::nextSiblingMultiColumnSet() const |
{ |
for (LayoutObject* sibling = nextSibling(); sibling; sibling = sibling->nextSibling()) { |