Index: Source/core/svg/SVGImageElement.cpp |
diff --git a/Source/core/svg/SVGImageElement.cpp b/Source/core/svg/SVGImageElement.cpp |
index e4313786a3e0633ace4db4a1e2210ca7e76c39df..1af4d6121d446f7b307ef5cb3e6e21c583e6ee86 100644 |
--- a/Source/core/svg/SVGImageElement.cpp |
+++ b/Source/core/svg/SVGImageElement.cpp |
@@ -89,21 +89,28 @@ bool SVGImageElement::isSupportedAttribute(const QualifiedName& attrName) |
return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); |
} |
-bool SVGImageElement::isPresentationAttribute(const QualifiedName& name) const |
+bool SVGImageElement::isPresentationAttribute(const QualifiedName& attrName) const |
{ |
- if (name == SVGNames::widthAttr || name == SVGNames::heightAttr) |
+ if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr |
+ || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) |
return true; |
- return SVGGraphicsElement::isPresentationAttribute(name); |
+ return SVGGraphicsElement::isPresentationAttribute(attrName); |
} |
void SVGImageElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style) |
{ |
- if (!isSupportedAttribute(name)) |
- SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style); |
- else if (name == SVGNames::widthAttr) |
+ RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property = propertyFromAttribute(name); |
+ |
+ if (property == m_width) |
addPropertyToPresentationAttributeStyle(style, CSSPropertyWidth, value); |
- else if (name == SVGNames::heightAttr) |
+ else if (property == m_height) |
addPropertyToPresentationAttributeStyle(style, CSSPropertyHeight, value); |
+ else if (property == m_x) |
+ addPropertyToPresentationAttributeStyle(style, CSSPropertyX, m_x->currentValue()->valueInSpecifiedUnits(), m_x->currentValue()->cssUnitTypeQuirk()); |
+ else if (property == m_y) |
+ addPropertyToPresentationAttributeStyle(style, CSSPropertyY, m_y->currentValue()->valueInSpecifiedUnits(), m_y->currentValue()->cssUnitTypeQuirk()); |
+ else |
+ SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style); |
} |
void SVGImageElement::parseAttribute(const QualifiedName& name, const AtomicString& value) |
@@ -120,6 +127,13 @@ void SVGImageElement::svgAttributeChanged(const QualifiedName& attrName) |
SVGElement::InvalidationGuard invalidationGuard(this); |
+ if (attrName == SVGNames::xAttr |
fs
2015/02/04 13:24:53
Not sure how the 'width' and 'height' values shoul
Erik Dahlström (inactive)
2015/02/05 16:09:02
Agreed, that looks like a bug. Will fix.
|
+ || attrName == SVGNames::yAttr) { |
+ invalidateSVGPresentationAttributeStyle(); |
+ setNeedsStyleRecalc(LocalStyleChange, |
+ StyleChangeReasonForTracing::fromAttribute(attrName)); |
+ } |
+ |
bool isLengthAttribute = attrName == SVGNames::xAttr |
|| attrName == SVGNames::yAttr |
|| attrName == SVGNames::widthAttr |