Index: Source/core/rendering/RenderMultiColumnSet.h |
diff --git a/Source/core/rendering/RenderMultiColumnSet.h b/Source/core/rendering/RenderMultiColumnSet.h |
index 7caab518bc65064dff8654b7266dfccc25264db1..932a42b919884aba62284a93dddbf5eb6df1ee98 100644 |
--- a/Source/core/rendering/RenderMultiColumnSet.h |
+++ b/Source/core/rendering/RenderMultiColumnSet.h |
@@ -52,6 +52,8 @@ namespace WebCore { |
// placed in between the column sets that come before and after the span. |
class RenderMultiColumnSet FINAL : public RenderRegion { |
public: |
+ enum BalancedHeightCalculation { GuessFromFlowThreadPortion, StretchBySpaceShortage }; |
+ |
static RenderMultiColumnSet* createAnonymous(RenderFlowThread*, RenderStyle* parentStyle); |
virtual bool isRenderMultiColumnSet() const OVERRIDE { return true; } |
@@ -64,6 +66,7 @@ public: |
} |
RenderMultiColumnSet* nextSiblingMultiColumnSet() const; |
+ RenderMultiColumnSet* previousSiblingMultiColumnSet() const; |
LayoutUnit logicalTopInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().y() : flowThreadPortionRect().x(); } |
LayoutUnit logicalBottomInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().maxY() : flowThreadPortionRect().maxX(); } |
@@ -95,10 +98,8 @@ public: |
// height. |
void addContentRun(LayoutUnit endOffsetFromFirstPage); |
- // (Re-)calculate the column height if it's auto. If 'initial' is set, guess an initial column |
- // height; otherwise, stretch the column height a tad. Return true if column height changed and |
- // another layout pass is required. |
- bool recalculateColumnHeight(bool initial); |
+ // (Re-)calculate the column height if it's auto. |
+ bool recalculateColumnHeight(BalancedHeightCalculation); |
// Record space shortage (the amount of space that would have been enough to prevent some |
// element from being moved to the next column) at a column break. The smallest amount of space |
@@ -106,9 +107,8 @@ public: |
// after layout that the columns weren't tall enough. |
void recordSpaceShortage(LayoutUnit spaceShortage); |
- virtual void updateLogicalWidth() OVERRIDE; |
- |
- void prepareForLayout(); |
+ // Reset previously calculated column height. Will mark for layout if needed. |
+ void resetColumnHeight(); |
// Expand this set's flow thread portion rectangle to contain all trailing flow thread |
// overflow. Only to be called on the last set. |
@@ -117,7 +117,6 @@ public: |
private: |
RenderMultiColumnSet(RenderFlowThread*); |
- virtual void layout() OVERRIDE; |
virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE; |
virtual void paintObject(PaintInfo&, const LayoutPoint& paintOffset) OVERRIDE; |
@@ -133,10 +132,13 @@ private: |
virtual void collectLayerFragments(LayerFragments&, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect) OVERRIDE; |
+ virtual void addOverflowFromChildren() OVERRIDE; |
+ |
virtual const char* renderName() const OVERRIDE; |
void paintColumnRules(PaintInfo&, const LayoutPoint& paintOffset); |
+ LayoutUnit calculateMaxColumnHeight() const; |
LayoutUnit columnGap() const; |
LayoutRect columnRectAt(unsigned index) const; |
unsigned columnCount() const; |
@@ -161,7 +163,7 @@ private: |
// and store the results. This is needed in order to balance the columns. |
void distributeImplicitBreaks(); |
- LayoutUnit calculateColumnHeight(bool initial) const; |
+ LayoutUnit calculateColumnHeight(BalancedHeightCalculation) const; |
unsigned m_computedColumnCount; // Used column count (the resulting 'N' from the pseudo-algorithm in the multicol spec) |
LayoutUnit m_computedColumnWidth; // Used column width (the resulting 'W' from the pseudo-algorithm in the multicol spec) |