| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 3c67d938d7e0ea3c3051fbeddc0cb52c6dd3cdfe..d957e61d7ebb4b230aa475476d1a75f2a7a08038 100644
|
| --- a/Source/core/rendering/RenderObject.cpp
|
| +++ b/Source/core/rendering/RenderObject.cpp
|
| @@ -1518,9 +1518,9 @@ bool RenderObject::repaintAfterLayoutIfNeeded(const RenderLayerModelObject* repa
|
| fullRepaint = true;
|
| }
|
|
|
| - // If there is no intersection between the old and the new bounds, invalidating
|
| - // the difference is more expensive than just doing a full repaint.
|
| - if (!fullRepaint && !newBounds.intersects(oldBounds))
|
| + // If we shifted, we don't know the exact reason so we are conservative and trigger a full invalidation. Shifting could
|
| + // be caused by some layout property (left / top) or some in-flow renderer inserted / removed before us in the tree.
|
| + if (!fullRepaint && newBounds.location() != oldBounds.location())
|
| fullRepaint = true;
|
|
|
| if (!repaintContainer)
|
|
|