diff options
Diffstat (limited to 'Source/WebCore/dom/EventTarget.cpp')
-rw-r--r-- | Source/WebCore/dom/EventTarget.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/WebCore/dom/EventTarget.cpp b/Source/WebCore/dom/EventTarget.cpp index d84d66b..c9cece2 100644 --- a/Source/WebCore/dom/EventTarget.cpp +++ b/Source/WebCore/dom/EventTarget.cpp @@ -326,6 +326,16 @@ bool EventTarget::fireEventListeners(Event* event) EventListenerMap::iterator result = d->eventListenerMap.find(event->type()); if (result != d->eventListenerMap.end()) fireEventListeners(event, d, *result->second); + +#if ENABLE(TOUCH_EVENTS) && PLATFORM(ANDROID) + if (event->isTouchEvent() && !event->hitTouchHandler()) { + // Check for touchmove or touchend to see if we can skip + // the rest of the stream (we always get touchstart, don't need to check that) + if (d->eventListenerMap.contains(eventNames().touchmoveEvent) + || d->eventListenerMap.contains(eventNames().touchendEvent)) + event->setHitTouchHandler(); + } +#endif return !event->defaultPrevented(); } @@ -334,6 +344,11 @@ void EventTarget::fireEventListeners(Event* event, EventTargetData* d, EventList { RefPtr<EventTarget> protect = this; +#if ENABLE(TOUCH_EVENTS) && PLATFORM(ANDROID) + if (event->isTouchEvent()) + event->setHitTouchHandler(); +#endif + // Fire all listeners registered for this event. Don't fire listeners removed // during event dispatch. Also, don't fire event listeners added during event // dispatch. Conveniently, all new event listeners will be added after 'end', |