Index: Source/core/events/MouseEvent.cpp |
diff --git a/Source/core/events/MouseEvent.cpp b/Source/core/events/MouseEvent.cpp |
index b875392efae6270299157517467d31203ea4265d..bdfdd1f799e9516d305c63a3674dab75d45c1ad7 100644 |
--- a/Source/core/events/MouseEvent.cpp |
+++ b/Source/core/events/MouseEvent.cpp |
@@ -40,6 +40,7 @@ MouseEventInit::MouseEventInit() |
, shiftKey(false) |
, metaKey(false) |
, button(0) |
+ , buttons(0) |
, relatedTarget(nullptr) |
{ |
} |
@@ -61,24 +62,27 @@ PassRefPtrWillBeRawPtr<MouseEvent> MouseEvent::create(const AtomicString& eventT |
eventType, isBubbling, isCancelable, view, |
detail, event.globalPosition().x(), event.globalPosition().y(), event.position().x(), event.position().y(), |
event.movementDelta().x(), event.movementDelta().y(), |
- event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), event.button(), |
+ event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), event.button(), event.buttons(), |
relatedTarget, nullptr, false, event.syntheticEventType()); |
} |
PassRefPtrWillBeRawPtr<MouseEvent> MouseEvent::create(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtrWillBeRawPtr<AbstractView> view, |
int detail, int screenX, int screenY, int pageX, int pageY, |
int movementX, int movementY, |
- bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button, |
+ bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, |
+ unsigned short button, unsigned short buttons, |
PassRefPtrWillBeRawPtr<EventTarget> relatedTarget, PassRefPtrWillBeRawPtr<DataTransfer> dataTransfer, bool isSimulated, PlatformMouseEvent::SyntheticEventType syntheticEventType) |
{ |
return adoptRefWillBeNoop(new MouseEvent(type, canBubble, cancelable, view, |
detail, screenX, screenY, pageX, pageY, |
movementX, movementY, |
- ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget, dataTransfer, isSimulated, syntheticEventType)); |
+ ctrlKey, altKey, shiftKey, metaKey, button, buttons, |
+ relatedTarget, dataTransfer, isSimulated, syntheticEventType)); |
} |
MouseEvent::MouseEvent() |
: m_button(0) |
+ , m_buttons(0) |
, m_buttonDown(false) |
{ |
} |
@@ -87,13 +91,14 @@ MouseEvent::MouseEvent(const AtomicString& eventType, bool canBubble, bool cance |
int detail, int screenX, int screenY, int pageX, int pageY, |
int movementX, int movementY, |
bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, |
- unsigned short button, PassRefPtrWillBeRawPtr<EventTarget> relatedTarget, |
+ unsigned short button, unsigned short buttons, PassRefPtrWillBeRawPtr<EventTarget> relatedTarget, |
PassRefPtrWillBeRawPtr<DataTransfer> dataTransfer, bool isSimulated, PlatformMouseEvent::SyntheticEventType syntheticEventType) |
: MouseRelatedEvent(eventType, canBubble, cancelable, view, detail, IntPoint(screenX, screenY), |
IntPoint(pageX, pageY), |
IntPoint(movementX, movementY), |
ctrlKey, altKey, shiftKey, metaKey, isSimulated) |
, m_button(button == (unsigned short)-1 ? 0 : button) |
+ , m_buttons(buttons) |
, m_buttonDown(button != (unsigned short)-1) |
, m_relatedTarget(relatedTarget) |
, m_dataTransfer(dataTransfer) |
@@ -107,6 +112,7 @@ MouseEvent::MouseEvent(const AtomicString& eventType, const MouseEventInit& init |
IntPoint(0 /* movementX */, 0 /* movementY */), |
initializer.ctrlKey, initializer.altKey, initializer.shiftKey, initializer.metaKey, false /* isSimulated */) |
, m_button(initializer.button == (unsigned short)-1 ? 0 : initializer.button) |
+ , m_buttons(initializer.buttons) |
, m_buttonDown(initializer.button != (unsigned short)-1) |
, m_relatedTarget(initializer.relatedTarget) |
, m_dataTransfer(nullptr) |
@@ -205,7 +211,7 @@ SimulatedMouseEvent::~SimulatedMouseEvent() |
} |
SimulatedMouseEvent::SimulatedMouseEvent(const AtomicString& eventType, PassRefPtrWillBeRawPtr<AbstractView> view, PassRefPtrWillBeRawPtr<Event> underlyingEvent) |
- : MouseEvent(eventType, true, true, view, 0, 0, 0, 0, 0, 0, 0, false, false, false, false, 0, |
+ : MouseEvent(eventType, true, true, view, 0, 0, 0, 0, 0, 0, 0, false, false, false, false, 0, 0, |
nullptr, nullptr, true, PlatformMouseEvent::RealOrIndistinguishable) |
{ |
if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { |
@@ -272,9 +278,9 @@ bool MouseEventDispatchMediator::dispatchEvent(EventDispatcher* dispatcher) cons |
// as a separate event in other DOM-compliant browsers like Firefox, and so we do the same. |
RefPtrWillBeRawPtr<MouseEvent> doubleClickEvent = MouseEvent::create(); |
doubleClickEvent->initMouseEvent(EventTypeNames::dblclick, event()->bubbles(), event()->cancelable(), event()->view(), |
- event()->detail(), event()->screenX(), event()->screenY(), event()->clientX(), event()->clientY(), |
- event()->ctrlKey(), event()->altKey(), event()->shiftKey(), event()->metaKey(), |
- event()->button(), relatedTarget); |
+ event()->detail(), event()->screenX(), event()->screenY(), event()->clientX(), event()->clientY(), |
+ event()->ctrlKey(), event()->altKey(), event()->shiftKey(), event()->metaKey(), |
+ event()->button(), relatedTarget); |
if (event()->defaultHandled()) |
doubleClickEvent->setDefaultHandled(); |
EventDispatcher::dispatchEvent(dispatcher->node(), MouseEventDispatchMediator::create(doubleClickEvent)); |