| Index: Source/core/rendering/RenderBlock.cpp
|
| diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
|
| index a95ad9ee2a5fb8d4cc81f71a43687feab0881aa4..0f7aa6254f44206346c55c06f55b142b38ca35cd 100644
|
| --- a/Source/core/rendering/RenderBlock.cpp
|
| +++ b/Source/core/rendering/RenderBlock.cpp
|
| @@ -365,18 +365,20 @@ void RenderBlock::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
|
|
|
| void RenderBlock::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer)
|
| {
|
| - if (!shouldCheckForInvalidationAfterLayout())
|
| - return;
|
| + // Note, we don't want to early out here using shouldCheckForInvalidationAfterLayout as
|
| + // we have to make sure we go through any positioned objects as they won't be seen in
|
| + // the normal tree walk.
|
|
|
| - RenderBox::repaintTreeAfterLayout(repaintContainer);
|
| + if (shouldCheckForInvalidationAfterLayout())
|
| + RenderBox::repaintTreeAfterLayout(repaintContainer);
|
|
|
| // Take care of positioned objects. This is required as LayoutState keeps a single clip rect.
|
| if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects()) {
|
| TrackedRendererListHashSet::iterator end = positionedObjects->end();
|
| LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : locationOffset());
|
| +
|
| for (TrackedRendererListHashSet::iterator it = positionedObjects->begin(); it != end; ++it) {
|
| RenderBox* box = *it;
|
| -
|
| // One of the renderers we're skipping over here may be the child's repaint container,
|
| // so we can't pass our own repaint container along.
|
| const RenderLayerModelObject& repaintContainerForChild = *box->containerForRepaint();
|
|
|