| Index: tools/dom/templates/html/impl/impl_Event.darttemplate
|
| diff --git a/tools/dom/templates/html/impl/impl_Event.darttemplate b/tools/dom/templates/html/impl/impl_Event.darttemplate
|
| index a3fc47f660dd5faa429cd19a30bde06f4fc51673..ef07e13c1cdca386238aa5b5f3202f5500e8ac03 100644
|
| --- a/tools/dom/templates/html/impl/impl_Event.darttemplate
|
| +++ b/tools/dom/templates/html/impl/impl_Event.darttemplate
|
| @@ -33,7 +33,30 @@ $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
| e._initEvent(name, canBubble, cancelable);
|
| return e;
|
| }
|
| +
|
| + /** The CSS selector involved with event delegation. */
|
| + String _selector;
|
|
|
| - $CLASSNAME._private();
|
| + /**
|
| + * A pointer to the element whose CSS selector matched within which an event
|
| + * was fired. If this Event was not associated with any Event delegation,
|
| + * accessing this value will throw an [UnsupportedError].
|
| + */
|
| + Element get matchingTarget {
|
| + if (_selector == null) {
|
| + throw new UnsupportedError('Cannot call matchingTarget if this Event did'
|
| + ' not arise as a result of event delegation.');
|
| + }
|
| + var currentTarget = this.currentTarget;
|
| + var target = this.target;
|
| + var matchedTarget;
|
| + while (matchedTarget == null && target != currentTarget && target != null) {
|
| + if (target.matches(_selector)) {
|
| + matchedTarget = target;
|
| + }
|
| + target = target.parent;
|
| + }
|
| + return matchedTarget;
|
| + }
|
| $!MEMBERS
|
| }
|
|
|