Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Unified Diff: Source/core/layout/LayoutMultiColumnFlowThread.h

Issue 1292163002: Initial support for nested multicol layout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: code review Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/layout/LayoutMultiColumnFlowThread.h
diff --git a/Source/core/layout/LayoutMultiColumnFlowThread.h b/Source/core/layout/LayoutMultiColumnFlowThread.h
index ca36f2ab1b26a8c3c53af5845e570db2da614c75..a67c9c91e96ef4b67020f3cdb32544057bd906b3 100644
--- a/Source/core/layout/LayoutMultiColumnFlowThread.h
+++ b/Source/core/layout/LayoutMultiColumnFlowThread.h
@@ -168,12 +168,18 @@ public:
// Do we need to set a new width and lay out?
virtual bool needsNewWidth() const;
+ bool isPageLogicalHeightKnown() const final;
+
+ LayoutSize flowThreadTranslationAtOffset(LayoutUnit) const;
+
LayoutPoint visualPointToFlowThreadPoint(const LayoutPoint& visualPoint) const override;
LayoutMultiColumnSet* columnSetAtBlockOffset(LayoutUnit) const final;
void layoutColumns(bool relayoutChildren, SubtreeLayoutScope&);
+ bool isInInitialLayoutPass() const { return !m_inBalancingPass; }
+
bool recalculateColumnHeights();
void columnRuleStyleDidChange();
@@ -181,6 +187,17 @@ public:
// Remove the spanner placeholder and return true if the specified object is no longer a valid spanner.
bool removeSpannerPlaceholderIfNoLongerValid(LayoutBox* spannerObjectInFlowThread);
+ LayoutMultiColumnFlowThread* enclosingFlowThread() const;
+ LayoutUnit blockOffsetInEnclosingFlowThread() const { ASSERT(enclosingFlowThread()); return m_blockOffsetInEnclosingFlowThread; }
+
+ // Return true if we have a fragmentainer group that can hold a column at the specified flow thread block offset.
+ bool hasFragmentainerGroupForColumnAt(LayoutUnit offsetInFlowThread) const;
+
+ // If we've run out of columns in the last fragmentainer group (column row), we have to insert
+ // another fragmentainer group in order to hold more columns. This means that we're moving to
+ // the next outer column (in the enclosing fragmentation context).
+ void appendNewFragmentainerGroupIfNeeded(LayoutUnit offsetInFlowThread);
+
const char* name() const override { return "LayoutMultiColumnFlowThread"; }
protected:
@@ -209,7 +226,6 @@ private:
void setPageBreak(LayoutUnit offset, LayoutUnit spaceShortage) override;
void updateMinimumPageHeight(LayoutUnit offset, LayoutUnit minHeight) override;
bool addForcedColumnBreak(LayoutUnit, LayoutObject* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = nullptr) override;
- bool isPageLogicalHeightKnown() const override;
// The last set we worked on. It's not to be used as the "current set". The concept of a
// "current set" is difficult, since layout may jump back and forth in the tree, due to wrong
@@ -218,6 +234,11 @@ private:
unsigned m_columnCount; // The used value of column-count
LayoutUnit m_columnHeightAvailable; // Total height available to columns, or 0 if auto.
+
+ // Cached block offset from this flow thread to the enclosing flow thread, if any. In the
+ // coordinate space of the enclosing flow thread.
+ LayoutUnit m_blockOffsetInEnclosingFlowThread;
+
bool m_inBalancingPass; // Set when relayouting for column balancing.
bool m_needsColumnHeightsRecalculation; // Set when we need to recalculate the column set heights after layout.
bool m_progressionIsInline; // Always true for regular multicol. False for paged-y overflow.
« no previous file with comments | « LayoutTests/fast/multicol/nested-outer-fixed-height-expected.html ('k') | Source/core/layout/LayoutMultiColumnFlowThread.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698