Chromium Code Reviews| Index: Source/core/rendering/RenderBlock.cpp |
| diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp |
| index 410ccea586f7631dfdd2cba1cb7633a9dbb0d37d..824f31fee40044fe0a14ab1e92af1f91d2e188e4 100644 |
| --- a/Source/core/rendering/RenderBlock.cpp |
| +++ b/Source/core/rendering/RenderBlock.cpp |
| @@ -1745,6 +1745,8 @@ void RenderBlock::layoutPositionedObjects(bool relayoutChildren, bool fixedPosit |
| for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(); it != end; ++it) { |
| r = *it; |
| + LayoutRectRecorder recorder(*r); |
| + |
| SubtreeLayoutScope layoutScope(r); |
| // A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So |
| // if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e. |
| @@ -1786,7 +1788,10 @@ void RenderBlock::layoutPositionedObjects(bool relayoutChildren, bool fixedPosit |
| oldLogicalTop = logicalTopForChild(r); |
| } |
| - r->layoutIfNeeded(); |
| + if (r->needsLayout()) |
| + r->layout(); |
| + else |
| + r->setShouldDoFullRepaintAfterLayout(true); |
|
Julien - ping for review
2014/03/04 18:22:10
This will cause all positioned objects to be repai
dsinclair
2014/03/04 19:21:52
Done.
|
| // Lay out again if our estimate was wrong. |
| if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r) != oldLogicalTop) |