| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 2133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2144 Vector<AtomicString> types = listenerMap.eventTypes(); | 2144 Vector<AtomicString> types = listenerMap.eventTypes(); |
| 2145 for (unsigned i = 0; i < types.size(); ++i) | 2145 for (unsigned i = 0; i < types.size(); ++i) |
| 2146 document()->addListenerTypeIfNeeded(types[i]); | 2146 document()->addListenerTypeIfNeeded(types[i]); |
| 2147 } | 2147 } |
| 2148 } | 2148 } |
| 2149 | 2149 |
| 2150 if (AXObjectCache::accessibilityEnabled() && oldDocument) | 2150 if (AXObjectCache::accessibilityEnabled() && oldDocument) |
| 2151 if (AXObjectCache* cache = oldDocument->existingAXObjectCache()) | 2151 if (AXObjectCache* cache = oldDocument->existingAXObjectCache()) |
| 2152 cache->remove(this); | 2152 cache->remove(this); |
| 2153 | 2153 |
| 2154 const EventListenerVector& wheelListeners = getEventListeners(eventNames().m
ousewheelEvent); | 2154 const EventListenerVector& mousewheelListeners = getEventListeners(eventName
s().mousewheelEvent); |
| 2155 for (size_t i = 0; i < mousewheelListeners.size(); ++i) { |
| 2156 oldDocument->didRemoveWheelEventHandler(); |
| 2157 document()->didAddWheelEventHandler(); |
| 2158 } |
| 2159 |
| 2160 const EventListenerVector& wheelListeners = getEventListeners(eventNames().w
heelEvent); |
| 2155 for (size_t i = 0; i < wheelListeners.size(); ++i) { | 2161 for (size_t i = 0; i < wheelListeners.size(); ++i) { |
| 2156 oldDocument->didRemoveWheelEventHandler(); | 2162 oldDocument->didRemoveWheelEventHandler(); |
| 2157 document()->didAddWheelEventHandler(); | 2163 document()->didAddWheelEventHandler(); |
| 2158 } | 2164 } |
| 2159 | 2165 |
| 2160 if (const TouchEventTargetSet* touchHandlers = oldDocument ? oldDocument->to
uchEventTargets() : 0) { | 2166 if (const TouchEventTargetSet* touchHandlers = oldDocument ? oldDocument->to
uchEventTargets() : 0) { |
| 2161 while (touchHandlers->contains(this)) { | 2167 while (touchHandlers->contains(this)) { |
| 2162 oldDocument->didRemoveTouchEventHandler(this); | 2168 oldDocument->didRemoveTouchEventHandler(this); |
| 2163 document()->didAddTouchEventHandler(this); | 2169 document()->didAddTouchEventHandler(this); |
| 2164 } | 2170 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2177 } | 2183 } |
| 2178 } | 2184 } |
| 2179 | 2185 |
| 2180 static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eve
ntType, PassRefPtr<EventListener> listener, bool useCapture) | 2186 static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eve
ntType, PassRefPtr<EventListener> listener, bool useCapture) |
| 2181 { | 2187 { |
| 2182 if (!targetNode->EventTarget::addEventListener(eventType, listener, useCaptu
re)) | 2188 if (!targetNode->EventTarget::addEventListener(eventType, listener, useCaptu
re)) |
| 2183 return false; | 2189 return false; |
| 2184 | 2190 |
| 2185 if (Document* document = targetNode->document()) { | 2191 if (Document* document = targetNode->document()) { |
| 2186 document->addListenerTypeIfNeeded(eventType); | 2192 document->addListenerTypeIfNeeded(eventType); |
| 2187 if (eventType == eventNames().mousewheelEvent) | 2193 if (eventType == eventNames().wheelEvent || eventType == eventNames().mo
usewheelEvent) |
| 2188 document->didAddWheelEventHandler(); | 2194 document->didAddWheelEventHandler(); |
| 2189 else if (eventNames().isTouchEventType(eventType)) | 2195 else if (eventNames().isTouchEventType(eventType)) |
| 2190 document->didAddTouchEventHandler(targetNode); | 2196 document->didAddTouchEventHandler(targetNode); |
| 2191 } | 2197 } |
| 2192 | 2198 |
| 2193 return true; | 2199 return true; |
| 2194 } | 2200 } |
| 2195 | 2201 |
| 2196 bool Node::addEventListener(const AtomicString& eventType, PassRefPtr<EventListe
ner> listener, bool useCapture) | 2202 bool Node::addEventListener(const AtomicString& eventType, PassRefPtr<EventListe
ner> listener, bool useCapture) |
| 2197 { | 2203 { |
| 2198 return tryAddEventListener(this, eventType, listener, useCapture); | 2204 return tryAddEventListener(this, eventType, listener, useCapture); |
| 2199 } | 2205 } |
| 2200 | 2206 |
| 2201 static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString&
eventType, EventListener* listener, bool useCapture) | 2207 static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString&
eventType, EventListener* listener, bool useCapture) |
| 2202 { | 2208 { |
| 2203 if (!targetNode->EventTarget::removeEventListener(eventType, listener, useCa
pture)) | 2209 if (!targetNode->EventTarget::removeEventListener(eventType, listener, useCa
pture)) |
| 2204 return false; | 2210 return false; |
| 2205 | 2211 |
| 2206 // FIXME: Notify Document that the listener has vanished. We need to keep tr
ack of a number of | 2212 // FIXME: Notify Document that the listener has vanished. We need to keep tr
ack of a number of |
| 2207 // listeners for each type, not just a bool - see https://bugs.webkit.org/sh
ow_bug.cgi?id=33861 | 2213 // listeners for each type, not just a bool - see https://bugs.webkit.org/sh
ow_bug.cgi?id=33861 |
| 2208 if (Document* document = targetNode->document()) { | 2214 if (Document* document = targetNode->document()) { |
| 2209 if (eventType == eventNames().mousewheelEvent) | 2215 if (eventType == eventNames().wheelEvent || eventType == eventNames().mo
usewheelEvent) |
| 2210 document->didRemoveWheelEventHandler(); | 2216 document->didRemoveWheelEventHandler(); |
| 2211 else if (eventNames().isTouchEventType(eventType)) | 2217 else if (eventNames().isTouchEventType(eventType)) |
| 2212 document->didRemoveTouchEventHandler(targetNode); | 2218 document->didRemoveTouchEventHandler(targetNode); |
| 2213 } | 2219 } |
| 2214 | 2220 |
| 2215 return true; | 2221 return true; |
| 2216 } | 2222 } |
| 2217 | 2223 |
| 2218 bool Node::removeEventListener(const AtomicString& eventType, EventListener* lis
tener, bool useCapture) | 2224 bool Node::removeEventListener(const AtomicString& eventType, EventListener* lis
tener, bool useCapture) |
| 2219 { | 2225 { |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2506 RenderObject* renderer = this->renderer(); | 2512 RenderObject* renderer = this->renderer(); |
| 2507 while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->ca
nBeScrolledAndHasScrollableArea())) | 2513 while (renderer && (!renderer->isBox() || !toRenderBox(renderer)->ca
nBeScrolledAndHasScrollableArea())) |
| 2508 renderer = renderer->parent(); | 2514 renderer = renderer->parent(); |
| 2509 | 2515 |
| 2510 if (renderer) { | 2516 if (renderer) { |
| 2511 if (Frame* frame = document()->frame()) | 2517 if (Frame* frame = document()->frame()) |
| 2512 frame->eventHandler()->startPanScrolling(renderer); | 2518 frame->eventHandler()->startPanScrolling(renderer); |
| 2513 } | 2519 } |
| 2514 } | 2520 } |
| 2515 #endif | 2521 #endif |
| 2516 } else if (eventType == eventNames().mousewheelEvent && event->hasInterface(
eventNames().interfaceForWheelEvent)) { | 2522 } else if ((eventType == eventNames().wheelEvent || eventType == eventNames(
).mousewheelEvent) && event->hasInterface(eventNames().interfaceForWheelEvent))
{ |
| 2517 WheelEvent* wheelEvent = static_cast<WheelEvent*>(event); | 2523 WheelEvent* wheelEvent = static_cast<WheelEvent*>(event); |
| 2518 | 2524 |
| 2519 // If we don't have a renderer, send the wheel event to the first node w
e find with a renderer. | 2525 // If we don't have a renderer, send the wheel event to the first node w
e find with a renderer. |
| 2520 // This is needed for <option> and <optgroup> elements so that <select>s
get a wheel scroll. | 2526 // This is needed for <option> and <optgroup> elements so that <select>s
get a wheel scroll. |
| 2521 Node* startNode = this; | 2527 Node* startNode = this; |
| 2522 while (startNode && !startNode->renderer()) | 2528 while (startNode && !startNode->renderer()) |
| 2523 startNode = startNode->parentOrShadowHostNode(); | 2529 startNode = startNode->parentOrShadowHostNode(); |
| 2524 | 2530 |
| 2525 if (startNode && startNode->renderer()) | 2531 if (startNode && startNode->renderer()) |
| 2526 if (Frame* frame = document()->frame()) | 2532 if (Frame* frame = document()->frame()) |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2762 node->showTreeForThis(); | 2768 node->showTreeForThis(); |
| 2763 } | 2769 } |
| 2764 | 2770 |
| 2765 void showNodePath(const WebCore::Node* node) | 2771 void showNodePath(const WebCore::Node* node) |
| 2766 { | 2772 { |
| 2767 if (node) | 2773 if (node) |
| 2768 node->showNodePathForThis(); | 2774 node->showNodePathForThis(); |
| 2769 } | 2775 } |
| 2770 | 2776 |
| 2771 #endif | 2777 #endif |
| OLD | NEW |