Index: Source/core/rendering/RenderObject.cpp |
diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
index 6a6f83e19b7eaf5ab404a4ce132e23413144530b..c4bcb740816ce06ecda2a7034f952e82c4695907 100644 |
--- a/Source/core/rendering/RenderObject.cpp |
+++ b/Source/core/rendering/RenderObject.cpp |
@@ -1530,8 +1530,15 @@ void RenderObject::paintInvalidationForWholeRenderer() const |
// Until those states are fully fledged, I'll just disable the ASSERTS. |
DisableCompositingQueryAsserts disabler; |
const RenderLayerModelObject* paintInvalidationContainer = containerForPaintInvalidation(); |
+ |
+ // FIXME: We should invalidate only previousPaintInvalidationRect, but for now we invalidate both the previous |
+ // and current paint rects to meet the expectations of some callers in some cases (crbug.com/397555): |
+ // - transform style change without a layout - crbug.com/394004; |
+ // - some objects don't save previousPaintInvalidationRect - crbug.com/394133. |
LayoutRect paintInvalidationRect = boundsRectForPaintInvalidation(paintInvalidationContainer); |
invalidatePaintUsingContainer(paintInvalidationContainer, paintInvalidationRect, InvalidationPaint); |
+ if (paintInvalidationRect != previousPaintInvalidationRect()) |
+ invalidatePaintUsingContainer(paintInvalidationContainer, previousPaintInvalidationRect(), InvalidationPaint); |
} |
LayoutRect RenderObject::boundsRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const |