diff options
Diffstat (limited to 'WebCore/wml/WMLOnEventElement.cpp')
-rw-r--r-- | WebCore/wml/WMLOnEventElement.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/WebCore/wml/WMLOnEventElement.cpp b/WebCore/wml/WMLOnEventElement.cpp index a8d35a0..6fc4e8b 100644 --- a/WebCore/wml/WMLOnEventElement.cpp +++ b/WebCore/wml/WMLOnEventElement.cpp @@ -60,19 +60,21 @@ void WMLOnEventElement::parseMappedAttribute(MappedAttribute* attr) WMLElement::parseMappedAttribute(attr); } +static inline WMLEventHandlingElement* eventHandlingParent(Node* parent) +{ + if (!parent || !parent->isWMLElement()) + return 0; + + return toWMLEventHandlingElement(static_cast<WMLElement*>(parent)); +} + void WMLOnEventElement::registerTask(WMLTaskElement* task) { if (m_type == WMLIntrinsicEventUnknown) return; // Register intrinsic event to the event handler of the owner of onevent element - Node* parent = parentNode(); - ASSERT(parent); - - if (!parent || !parent->isWMLElement()) - return; - - WMLEventHandlingElement* eventHandlingElement = toWMLEventHandlingElement(static_cast<WMLElement*>(parent)); + WMLEventHandlingElement* eventHandlingElement = eventHandlingParent(parentNode()); if (!eventHandlingElement) return; @@ -83,6 +85,15 @@ void WMLOnEventElement::registerTask(WMLTaskElement* task) reportWMLError(document(), WMLErrorConflictingEventBinding); } +void WMLOnEventElement::deregisterTask(WMLTaskElement*) +{ + WMLEventHandlingElement* eventHandlingElement = eventHandlingParent(parentNode()); + if (!eventHandlingElement) + return; + + eventHandlingElement->eventHandler()->deregisterIntrinsicEvent(m_type); +} + } #endif |