summaryrefslogtreecommitdiffstats
path: root/WebCore/svg/SVGFilterElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/svg/SVGFilterElement.cpp')
-rw-r--r--WebCore/svg/SVGFilterElement.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/WebCore/svg/SVGFilterElement.cpp b/WebCore/svg/SVGFilterElement.cpp
index 4387e71..0d55bb1 100644
--- a/WebCore/svg/SVGFilterElement.cpp
+++ b/WebCore/svg/SVGFilterElement.cpp
@@ -66,7 +66,9 @@ void SVGFilterElement::setFilterRes(unsigned long filterResX, unsigned long filt
{
setFilterResXBaseValue(filterResX);
setFilterResYBaseValue(filterResY);
- invalidateResourceClients();
+
+ if (RenderObject* object = renderer())
+ object->setNeedsLayout(true);
}
void SVGFilterElement::parseMappedAttribute(Attribute* attr)
@@ -121,6 +123,10 @@ void SVGFilterElement::svgAttributeChanged(const QualifiedName& attrName)
updateRelativeLengthsInformation();
}
+ RenderObject* object = renderer();
+ if (!object)
+ return;
+
if (invalidateClients
|| attrName == SVGNames::filterUnitsAttr
|| attrName == SVGNames::primitiveUnitsAttr
@@ -129,7 +135,7 @@ void SVGFilterElement::svgAttributeChanged(const QualifiedName& attrName)
|| SVGURIReference::isKnownAttribute(attrName)
|| SVGLangSpace::isKnownAttribute(attrName)
|| SVGExternalResourcesRequired::isKnownAttribute(attrName))
- invalidateResourceClients();
+ object->setNeedsLayout(true);
}
void SVGFilterElement::synchronizeProperty(const QualifiedName& attrName)
@@ -175,8 +181,11 @@ void SVGFilterElement::childrenChanged(bool changedByParser, Node* beforeChange,
{
SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
- if (!changedByParser)
- invalidateResourceClients();
+ if (changedByParser)
+ return;
+
+ if (RenderObject* object = renderer())
+ object->setNeedsLayout(true);
}
FloatRect SVGFilterElement::filterBoundingBox(const FloatRect& objectBoundingBox) const