Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp |
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp |
index 4b7e9e3d17b40123e710ae12cc81dbb665fed80f..429201380a5260dfde59a07b0da240f416304e4e 100644 |
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp |
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp |
@@ -59,7 +59,12 @@ void LayoutSVGContainer::layout() |
// LayoutSVGViewportContainer needs to set the 'layout size changed' flag. |
determineIfLayoutSizeChanged(); |
- SVGLayoutSupport::layoutChildren(this, selfNeedsLayout() || SVGLayoutSupport::filtersForceContainerLayout(this)); |
+ // If any of this container's children need to be laid out, and a filter is |
+ // applied to the container, we need to issue paint invalidations for all |
+ // the descendants. |
+ bool forceLayoutOfChildren = selfNeedsLayout() |
+ || (normalChildNeedsLayout() && SVGLayoutSupport::hasFilterResource(*this)); |
+ SVGLayoutSupport::layoutChildren(this, forceLayoutOfChildren); |
// Invalidate all resources of this client if our layout changed. |
if (everHadLayout() && needsLayout()) |
@@ -98,8 +103,7 @@ void LayoutSVGContainer::removeChild(LayoutObject* child) |
bool LayoutSVGContainer::selfWillPaint() const |
{ |
- SVGResources* resources = SVGResourcesCache::cachedResourcesForLayoutObject(this); |
- return resources && resources->filter(); |
+ return SVGLayoutSupport::hasFilterResource(*this); |
} |
void LayoutSVGContainer::styleDidChange(StyleDifference diff, const ComputedStyle* oldStyle) |