using namespace HTMLNames;
// Animated property definitions
-DEFINE_ANIMATED_STRING(SVGAElement, SVGNames::targetAttr, SVGTarget, svgTarget)
-DEFINE_ANIMATED_STRING(SVGAElement, XLinkNames::hrefAttr, Href, href)
BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGAElement)
- REGISTER_LOCAL_ANIMATED_PROPERTY(svgTarget)
- REGISTER_LOCAL_ANIMATED_PROPERTY(href)
REGISTER_PARENT_ANIMATED_PROPERTIES(SVGGraphicsElement)
END_REGISTER_ANIMATED_PROPERTIES
inline SVGAElement::SVGAElement(Document& document)
: SVGGraphicsElement(SVGNames::aTag, document)
+ , SVGURIReference(this)
+ , m_svgTarget(SVGAnimatedString::create(this, SVGNames::targetAttr, SVGString::create()))
{
ScriptWrappable::init(this);
+ addToPropertyMap(m_svgTarget);
registerAnimatedPropertiesForSVGAElement();
}
return;
}
+ SVGParsingError parseError = NoError;
+
if (name == SVGNames::targetAttr) {
- setSVGTargetBaseValue(value);
- return;
+ m_svgTarget->setBaseValueAsString(value, parseError);
+ } else if (SVGURIReference::parseAttribute(name, value, parseError)) {
+ } else {
+ ASSERT_NOT_REACHED();
}
- if (SVGURIReference::parseAttribute(name, value))
- return;
-
- ASSERT_NOT_REACHED();
+ reportAttributeParsingError(parseError, name, value);
}
void SVGAElement::svgAttributeChanged(const QualifiedName& attrName)
// as none of the other properties changes the linking behaviour for our <a> element.
if (SVGURIReference::isKnownAttribute(attrName)) {
bool wasLink = isLink();
- setIsLink(!hrefCurrentValue().isNull());
+ setIsLink(!hrefString().isNull());
if (wasLink != isLink())
- setNeedsStyleRecalc();
+ setNeedsStyleRecalc(SubtreeStyleChange);
}
}
}
if (isLinkClick(event)) {
- String url = stripLeadingAndTrailingHTMLSpaces(hrefCurrentValue());
+ String url = stripLeadingAndTrailingHTMLSpaces(hrefString());
if (url[0] == '#') {
Element* targetElement = treeScope().getElementById(AtomicString(url.substring(1)));
return;
}
- AtomicString target(svgTargetCurrentValue());
+ AtomicString target(m_svgTarget->currentValue()->value());
if (target.isEmpty() && fastGetAttribute(XLinkNames::showAttr) == "new")
target = AtomicString("_blank", AtomicString::ConstructFromLiteral);
event->setDefaultHandled();
return true;
}
-bool SVGAElement::rendererIsFocusable() const
-{
- if (renderer() && renderer()->absoluteClippedOverflowRect().isEmpty())
- return false;
-
- return SVGElement::rendererIsFocusable();
-}
-
bool SVGAElement::isURLAttribute(const Attribute& attribute) const
{
return attribute.name().localName() == hrefAttr || SVGGraphicsElement::isURLAttribute(attribute);