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

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

Issue 43873004: Relayout RenderObjects with viewport-percentage CSS properties when viewport size changes (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 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/RenderView.cpp
diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp
index 44cc1188cd44e9aa2527bb555fce1da9d7224cce..acd388fc22698e67b7ed6e46781c614a31277600 100644
--- a/Source/core/rendering/RenderView.cpp
+++ b/Source/core/rendering/RenderView.cpp
@@ -319,13 +319,16 @@ void RenderView::layout()
if ((child->isBox() && toRenderBox(child)->hasRelativeLogicalHeight())
|| child->style()->logicalHeight().isPercent()
|| child->style()->logicalMinHeight().isPercent()
- || child->style()->logicalMaxHeight().isPercent()
- || child->style()->logicalHeight().isViewportPercentage()
- || child->style()->logicalMinHeight().isViewportPercentage()
- || child->style()->logicalMaxHeight().isViewportPercentage())
+ || child->style()->logicalMaxHeight().isPercent())
layoutScope.setChildNeedsLayout(child);
}
+ if (m_viewportPercentageStyleObjects) {
+ ViewportPercentageStyleObjectSet::const_iterator end = m_viewportPercentageStyleObjects->end();
+ for (ViewportPercentageStyleObjectSet::const_iterator it = m_viewportPercentageStyleObjects->begin(); it != end; ++it)
+ layoutScope.setChildNeedsLayout(*it);
+ }
+
if (document().svgExtensions())
document().accessSVGExtensions()->invalidateSVGRootsWithRelativeLengthDescendents(&layoutScope);
}
@@ -1236,6 +1239,20 @@ LayoutUnit RenderView::viewportPercentageMax(float percentage) const
* percentage / 100.f;
}
+void RenderView::addViewportPercentageStyleObject(RenderObject* object)
+{
+ if (!m_viewportPercentageStyleObjects)
+ m_viewportPercentageStyleObjects = adoptPtr(new ViewportPercentageStyleObjectSet);
+
+ m_viewportPercentageStyleObjects->add(object);
leviw_travelin_and_unemployed 2013/10/25 20:30:35 Can you add asserts that we aren't double-adding o
+}
+
+void RenderView::removeViewportPercentageStyleObject(RenderObject* object)
+{
+ if (m_viewportPercentageStyleObjects)
+ m_viewportPercentageStyleObjects->remove(object);
+}
+
FragmentationDisabler::FragmentationDisabler(RenderObject* root)
{
RenderView* renderView = root->view();

Powered by Google App Engine
This is Rietveld 408576698