| Index: Source/core/rendering/RenderDeprecatedFlexibleBox.cpp
|
| diff --git a/Source/core/rendering/RenderDeprecatedFlexibleBox.cpp b/Source/core/rendering/RenderDeprecatedFlexibleBox.cpp
|
| index 0405fda927edea2b1cc314932f1286cf27e71997..1d72366188e719d69c2639f53dad812df07ade19 100644
|
| --- a/Source/core/rendering/RenderDeprecatedFlexibleBox.cpp
|
| +++ b/Source/core/rendering/RenderDeprecatedFlexibleBox.cpp
|
| @@ -258,44 +258,46 @@ void RenderDeprecatedFlexibleBox::layoutBlock(bool relayoutChildren)
|
| return;
|
|
|
| LayoutRepainter repainter(*this, checkForRepaintDuringLayout());
|
| - LayoutStateMaintainer statePusher(*this, locationOffset());
|
|
|
| - RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| - if (updateRegionsAndShapesLogicalSize(flowThread))
|
| - relayoutChildren = true;
|
| + {
|
| + // LayoutStateMaintainer needs this deliberate scope to pop before repaint
|
| + LayoutStateMaintainer statePusher(*this, locationOffset());
|
|
|
| - LayoutSize previousSize = size();
|
| + RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| + if (updateRegionsAndShapesLogicalSize(flowThread))
|
| + relayoutChildren = true;
|
|
|
| - updateLogicalWidth();
|
| - updateLogicalHeight();
|
| + LayoutSize previousSize = size();
|
|
|
| - if (previousSize != size()
|
| - || (parent()->isDeprecatedFlexibleBox() && parent()->style()->boxOrient() == HORIZONTAL
|
| - && parent()->style()->boxAlign() == BSTRETCH))
|
| - relayoutChildren = true;
|
| + updateLogicalWidth();
|
| + updateLogicalHeight();
|
|
|
| - setHeight(0);
|
| + if (previousSize != size()
|
| + || (parent()->isDeprecatedFlexibleBox() && parent()->style()->boxOrient() == HORIZONTAL
|
| + && parent()->style()->boxAlign() == BSTRETCH))
|
| + relayoutChildren = true;
|
|
|
| - m_stretchingChildren = false;
|
| + setHeight(0);
|
|
|
| - if (isHorizontal())
|
| - layoutHorizontalBox(relayoutChildren);
|
| - else
|
| - layoutVerticalBox(relayoutChildren);
|
| + m_stretchingChildren = false;
|
|
|
| - LayoutUnit oldClientAfterEdge = clientLogicalBottom();
|
| - updateLogicalHeight();
|
| + if (isHorizontal())
|
| + layoutHorizontalBox(relayoutChildren);
|
| + else
|
| + layoutVerticalBox(relayoutChildren);
|
|
|
| - if (previousSize.height() != height())
|
| - relayoutChildren = true;
|
| + LayoutUnit oldClientAfterEdge = clientLogicalBottom();
|
| + updateLogicalHeight();
|
|
|
| - layoutPositionedObjects(relayoutChildren || isRoot());
|
| + if (previousSize.height() != height())
|
| + relayoutChildren = true;
|
|
|
| - computeRegionRangeForBlock(flowThread);
|
| + layoutPositionedObjects(relayoutChildren || isRoot());
|
|
|
| - computeOverflow(oldClientAfterEdge);
|
| + computeRegionRangeForBlock(flowThread);
|
|
|
| - statePusher.pop();
|
| + computeOverflow(oldClientAfterEdge);
|
| + }
|
|
|
| updateLayerTransform();
|
|
|
|
|