Index: Source/core/rendering/RenderLayerModelObject.cpp |
diff --git a/Source/core/rendering/RenderLayerModelObject.cpp b/Source/core/rendering/RenderLayerModelObject.cpp |
index 82b423b6d1e9e948e10fed043cf89f8d26c50929..ca00211dc54fe1a98317f4b467a6fec3984aa12e 100644 |
--- a/Source/core/rendering/RenderLayerModelObject.cpp |
+++ b/Source/core/rendering/RenderLayerModelObject.cpp |
@@ -148,7 +148,12 @@ void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt |
setChildNeedsLayout(); |
createLayer(type); |
if (parent() && !needsLayout() && containingBlock()) { |
- layer()->repainter().setRepaintStatus(NeedsFullRepaint); |
+ // FIXME: This invalidation is overly broad. We should update to |
+ // do the correct invalidation at RenderStyle::diff time. crbug.com/349061 |
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled()) |
+ layer()->renderer()->setShouldDoFullRepaintAfterLayout(true); |
+ else |
+ layer()->repainter().setRepaintStatus(NeedsFullRepaint); |
// There is only one layer to update, it is not worth using |cachedOffset| since |
// we are not sure the value will be used. |
layer()->updateLayerPositions(0); |