| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) |
| 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) |
| 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 MouseEventDispatchMediator::MouseEventDispatchMediator(PassRefPtrWillBeRawPtr<Mo
useEvent> mouseEvent) | 244 MouseEventDispatchMediator::MouseEventDispatchMediator(PassRefPtrWillBeRawPtr<Mo
useEvent> mouseEvent) |
| 245 : EventDispatchMediator(mouseEvent) | 245 : EventDispatchMediator(mouseEvent) |
| 246 { | 246 { |
| 247 } | 247 } |
| 248 | 248 |
| 249 MouseEvent& MouseEventDispatchMediator::event() const | 249 MouseEvent& MouseEventDispatchMediator::event() const |
| 250 { | 250 { |
| 251 return toMouseEvent(EventDispatchMediator::event()); | 251 return toMouseEvent(EventDispatchMediator::event()); |
| 252 } | 252 } |
| 253 | 253 |
| 254 bool MouseEventDispatchMediator::dispatchEvent(EventDispatcher& dispatcher) cons
t | 254 WebInputEventResult MouseEventDispatchMediator::dispatchEvent(EventDispatcher& d
ispatcher) const |
| 255 { | 255 { |
| 256 MouseEvent& mouseEvent = event(); | 256 MouseEvent& mouseEvent = event(); |
| 257 if (!mouseEvent.isTrusted()) { | 257 if (!mouseEvent.isTrusted()) { |
| 258 mouseEvent.eventPath().adjustForRelatedTarget(dispatcher.node(), mouseEv
ent.relatedTarget()); | 258 mouseEvent.eventPath().adjustForRelatedTarget(dispatcher.node(), mouseEv
ent.relatedTarget()); |
| 259 return dispatcher.dispatch(); | 259 return dispatcher.dispatch(); |
| 260 } | 260 } |
| 261 | 261 |
| 262 if (isDisabledFormControl(&dispatcher.node())) | 262 if (isDisabledFormControl(&dispatcher.node())) |
| 263 return false; | 263 return WebInputEventResult::HandledSuppressed; |
| 264 | 264 |
| 265 if (mouseEvent.type().isEmpty()) | 265 if (mouseEvent.type().isEmpty()) |
| 266 return true; // Shouldn't happen. | 266 return WebInputEventResult::NotHandled; // Shouldn't happen. |
| 267 | 267 |
| 268 ASSERT(!mouseEvent.target() || mouseEvent.target() != mouseEvent.relatedTarg
et()); | 268 ASSERT(!mouseEvent.target() || mouseEvent.target() != mouseEvent.relatedTarg
et()); |
| 269 | 269 |
| 270 EventTarget* relatedTarget = mouseEvent.relatedTarget(); | 270 EventTarget* relatedTarget = mouseEvent.relatedTarget(); |
| 271 mouseEvent.eventPath().adjustForRelatedTarget(dispatcher.node(), relatedTarg
et); | 271 mouseEvent.eventPath().adjustForRelatedTarget(dispatcher.node(), relatedTarg
et); |
| 272 | 272 |
| 273 dispatcher.dispatch(); | 273 WebInputEventResult result = dispatcher.dispatch(); |
| 274 bool swallowEvent = mouseEvent.defaultHandled() || mouseEvent.defaultPrevent
ed(); | |
| 275 | 274 |
| 276 if (mouseEvent.type() != EventTypeNames::click || mouseEvent.detail() != 2) | 275 if (mouseEvent.type() != EventTypeNames::click || mouseEvent.detail() != 2) |
| 277 return !swallowEvent; | 276 return result; |
| 278 | 277 |
| 279 // Special case: If it's a double click event, we also send the dblclick eve
nt. This is not part | 278 // Special case: If it's a double click event, we also send the dblclick eve
nt. This is not part |
| 280 // of the DOM specs, but is used for compatibility with the ondblclick="" at
tribute. This is treated | 279 // of the DOM specs, but is used for compatibility with the ondblclick="" at
tribute. This is treated |
| 281 // as a separate event in other DOM-compliant browsers like Firefox, and so
we do the same. | 280 // as a separate event in other DOM-compliant browsers like Firefox, and so
we do the same. |
| 282 RefPtrWillBeRawPtr<MouseEvent> doubleClickEvent = MouseEvent::create(); | 281 RefPtrWillBeRawPtr<MouseEvent> doubleClickEvent = MouseEvent::create(); |
| 283 doubleClickEvent->initMouseEventInternal(EventTypeNames::dblclick, mouseEven
t.bubbles(), mouseEvent.cancelable(), mouseEvent.view(), | 282 doubleClickEvent->initMouseEventInternal(EventTypeNames::dblclick, mouseEven
t.bubbles(), mouseEvent.cancelable(), mouseEvent.view(), |
| 284 mouseEvent.detail(), mouseEvent.screenX(), mouseEvent.screenY(), mouseEv
ent.clientX(), mouseEvent.clientY(), | 283 mouseEvent.detail(), mouseEvent.screenX(), mouseEvent.screenY(), mouseEv
ent.clientX(), mouseEvent.clientY(), |
| 285 mouseEvent.modifiers(), mouseEvent.button(), relatedTarget, mouseEvent.s
ourceCapabilities(), mouseEvent.buttons()); | 284 mouseEvent.modifiers(), mouseEvent.button(), relatedTarget, mouseEvent.s
ourceCapabilities(), mouseEvent.buttons()); |
| 286 | 285 |
| 287 // Inherit the trusted status from the original event. | 286 // Inherit the trusted status from the original event. |
| 288 doubleClickEvent->setTrusted(mouseEvent.isTrusted()); | 287 doubleClickEvent->setTrusted(mouseEvent.isTrusted()); |
| 289 if (mouseEvent.defaultHandled()) | 288 if (mouseEvent.defaultHandled()) |
| 290 doubleClickEvent->setDefaultHandled(); | 289 doubleClickEvent->setDefaultHandled(); |
| 291 EventDispatcher::dispatchEvent(dispatcher.node(), MouseEventDispatchMediator
::create(doubleClickEvent)); | 290 WebInputEventResult doubleClickEventResult = EventDispatcher::dispatchEvent(
dispatcher.node(), MouseEventDispatchMediator::create(doubleClickEvent)); |
| 292 if (doubleClickEvent->defaultHandled() || doubleClickEvent->defaultPrevented
()) | 291 if (result != WebInputEventResult::NotHandled) |
| 293 return false; | 292 return result; |
| 294 return !swallowEvent; | 293 return doubleClickEventResult; |
| 295 } | 294 } |
| 296 | 295 |
| 297 } // namespace blink | 296 } // namespace blink |
| OLD | NEW |