Index: third_party/WebKit/Source/core/layout/ColumnBalancer.h |
diff --git a/third_party/WebKit/Source/core/layout/ColumnBalancer.h b/third_party/WebKit/Source/core/layout/ColumnBalancer.h |
index 938f3a8d207e7c991a956204ad34cab91d862c18..daab0d98ec96bf2fa2d591bd0191efcfb0430c54 100644 |
--- a/third_party/WebKit/Source/core/layout/ColumnBalancer.h |
+++ b/third_party/WebKit/Source/core/layout/ColumnBalancer.h |
@@ -76,6 +76,14 @@ private: |
void examineBoxBeforeLeaving(const LayoutBox&); |
void examineLine(const RootInlineBox&); |
+ // Record that there's a pagination strut that ends at the specified |offsetInFlowThread|, which |
+ // is an offset exactly at the top of some column. |
+ void recordStrutBeforeOffset(LayoutUnit offsetInFlowThread, LayoutUnit strut); |
+ |
+ // Return the accumulated space used by struts at all column boundaries preceding the specified |
+ // flowthread offset. |
+ LayoutUnit spaceUsedByStrutsAt(LayoutUnit offsetInFlowThread) const; |
+ |
// Add a content run, specified by its end position. A content run is appended at every |
// forced/explicit break and at the end of the column set. The content runs are used to |
// determine where implicit/soft breaks will occur, in order to calculate an initial column |
@@ -117,6 +125,19 @@ private: |
unsigned m_assumedImplicitBreaks; // Number of implicit breaks in this run assumed so far. |
}; |
Vector<ContentRun, 32> m_contentRuns; |
+ |
+ // Shortest strut found at each column boundary (index 0 being the boundary between the first |
+ // and the second column, index 1 being the one between the second and the third boundary, and |
+ // so on). There may be several objects that cross the same column boundary, and we're only |
+ // interested in the shortest one. For example, when having a float beside regular in-flow |
+ // content, we end up with two parallel fragmentation flows [1]. The shortest strut found at a |
+ // column boundary is the amount of space that we wasted at said column boundary, and it needs |
+ // to be deducted when estimating the initial balanced column height, or we risk making the |
+ // column row too tall. An entry set to LayoutUnit::max() means that we didn't detect any object |
+ // crossing that boundary. |
+ // |
+ // [1] http://www.w3.org/TR/css3-break/#parallel-flows |
+ Vector<LayoutUnit, 32> m_shortestStruts; |
}; |
// If we have previously used InitialColumnHeightFinder to estimate an initial column height, and |