| Index: Source/core/events/EventDispatcher.cpp
|
| diff --git a/Source/core/events/EventDispatcher.cpp b/Source/core/events/EventDispatcher.cpp
|
| index 4608101c264a159845dfa964eb9e09c77dbb7310..bcf98912982df0c3f5df8bb0e5662ded8dbeccca 100644
|
| --- a/Source/core/events/EventDispatcher.cpp
|
| +++ b/Source/core/events/EventDispatcher.cpp
|
| @@ -206,7 +206,11 @@ inline void EventDispatcher::dispatchEventPostProcess(void* preDispatchEventHand
|
| // Call default event handlers. While the DOM does have a concept of preventing
|
| // default handling, the detail of which handlers are called is an internal
|
| // implementation detail and not part of the DOM.
|
| - if (!m_event->defaultPrevented() && !m_event->defaultHandled()) {
|
| +
|
| + // Prevent calling default handlers for synthetic mouse events (issue #423975)
|
| + bool isSyntheticMouseEvent = m_event->isMouseEvent() && toMouseEvent(*m_event).isSynthetic();
|
| +
|
| + if (!m_event->defaultPrevented() && !m_event->defaultHandled() && !isSyntheticMouseEvent) {
|
| // Non-bubbling events call only one default event handler, the one for the target.
|
| m_node->willCallDefaultEventHandler(*m_event);
|
| m_node->defaultEventHandler(m_event.get());
|
|
|