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

Unified Diff: Source/core/rendering/RenderFlowThread.cpp

Issue 883293004: [New Multicolumn] Preparatory work for nested multicol support. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Place the new files in ../layout/ , since that's where they'll end up soon anyway. Created 5 years, 10 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/rendering/RenderFlowThread.cpp
diff --git a/Source/core/rendering/RenderFlowThread.cpp b/Source/core/rendering/RenderFlowThread.cpp
index 81710f994efdc5b256c40ea66dcdc0642b6b6194..20ec90755d1aa0be47ede3ad779614b1855e392e 100644
--- a/Source/core/rendering/RenderFlowThread.cpp
+++ b/Source/core/rendering/RenderFlowThread.cpp
@@ -90,7 +90,7 @@ void RenderFlowThread::validateRegions()
}
updateLogicalWidth(); // Called to get the maximum logical width for the columnSet.
- updateRegionsFlowThreadPortionRect();
+ generateColumnSetIntervalTree();
}
void RenderFlowThread::mapRectToPaintInvalidationBacking(const LayoutLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const
@@ -166,26 +166,13 @@ RenderRegion* RenderFlowThread::lastRegion() const
return m_multiColumnSetList.last();
}
-void RenderFlowThread::updateRegionsFlowThreadPortionRect()
+void RenderFlowThread::generateColumnSetIntervalTree()
{
- LayoutUnit logicalHeight = 0;
// FIXME: Optimize not to clear the interval all the time. This implies manually managing the tree nodes lifecycle.
m_multiColumnSetIntervalTree.clear();
m_multiColumnSetIntervalTree.initIfNeeded();
- for (RenderMultiColumnSetList::iterator iter = m_multiColumnSetList.begin(); iter != m_multiColumnSetList.end(); ++iter) {
- RenderMultiColumnSet* columnSet = *iter;
-
- LayoutUnit columnSetLogicalWidth = columnSet->pageLogicalWidth();
- LayoutUnit columnSetLogicalHeight = std::min<LayoutUnit>(RenderFlowThread::maxLogicalHeight() - logicalHeight, columnSet->logicalHeightInFlowThread());
-
- LayoutRect columnSetRect(style()->direction() == LTR ? LayoutUnit() : logicalWidth() - columnSetLogicalWidth, logicalHeight, columnSetLogicalWidth, columnSetLogicalHeight);
-
- columnSet->setFlowThreadPortionRect(isHorizontalWritingMode() ? columnSetRect : columnSetRect.transposedRect());
-
- m_multiColumnSetIntervalTree.add(MultiColumnSetIntervalTree::createInterval(logicalHeight, logicalHeight + columnSetLogicalHeight, columnSet));
-
- logicalHeight += columnSetLogicalHeight;
- }
+ for (auto columnSet : m_multiColumnSetList)
Julien - ping for review 2015/02/11 07:25:29 I assume this doesn't do a deep copy behind the sc
mstensho (USE GERRIT) 2015/02/11 09:49:55 Correct. No copying.
+ m_multiColumnSetIntervalTree.add(MultiColumnSetIntervalTree::createInterval(columnSet->logicalTopInFlowThread(), columnSet->logicalBottomInFlowThread(), columnSet));
}
void RenderFlowThread::collectLayerFragments(LayerFragments& layerFragments, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect)

Powered by Google App Engine
This is Rietveld 408576698