Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: Source/core/dom/Node.cpp

Issue 22859012: Add support for DOM Level 3 WheelEvent (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rename prefixedType() to legacyType() Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/EventTarget.cpp ('k') | Source/core/dom/WheelEvent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « Source/core/dom/EventTarget.cpp ('k') | Source/core/dom/WheelEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698