Index: Source/core/rendering/RenderView.cpp |
diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp |
index e1ab0f869ed6606ca262ca9650157a4c85e83ece..2d5b99f6f472c8081a71bf0f9b58daad976d56d2 100644 |
--- a/Source/core/rendering/RenderView.cpp |
+++ b/Source/core/rendering/RenderView.cpp |
@@ -120,8 +120,13 @@ void RenderView::layoutContent(const LayoutState& state) |
ASSERT(needsLayout()); |
RenderBlock::layout(); |
+ |
+ if (m_frameView->partialLayout().isStopping()) |
+ return; |
+ |
if (hasRenderNamedFlowThreads()) |
flowThreadController()->layoutRenderNamedFlowThreads(); |
+ |
#ifndef NDEBUG |
checkLayoutState(state); |
#endif |
@@ -212,6 +217,11 @@ bool RenderView::initializeLayoutState(LayoutState& state) |
// as detected in the previous step. |
void RenderView::layoutContentInAutoLogicalHeightRegions(const LayoutState& state) |
{ |
+ if (!m_frameView->partialLayout().isStopping()) { |
+ // Disable partial layout for any two-pass layout algorithm. |
+ m_frameView->partialLayout().reset(); |
+ } |
+ |
// We need to invalidate all the flows with auto-height regions if one such flow needs layout. |
// If none is found we do a layout a check back again afterwards. |
if (!flowThreadController()->updateFlowThreadsNeedingLayout()) { |
@@ -280,6 +290,11 @@ void RenderView::layout() |
else |
layoutContent(state); |
+ if (m_frameView->partialLayout().isStopping()) { |
+ m_layoutState = 0; |
+ return; |
+ } |
+ |
#ifndef NDEBUG |
checkLayoutState(state); |
#endif |