| Index: Source/core/page/EventHandler.cpp
|
| diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp
|
| index ae1dcb2150812c2a1eface03dedbfde39b38abfd..50a51f94bf4ade870b39447e668e3cfbb93c11df 100644
|
| --- a/Source/core/page/EventHandler.cpp
|
| +++ b/Source/core/page/EventHandler.cpp
|
| @@ -1612,6 +1612,15 @@ void EventHandler::invalidateClick()
|
| m_clickNode = 0;
|
| }
|
|
|
| +static Node* parentForClickEvent(const Node& node)
|
| +{
|
| + // IE doesn't dispatch click events for mousedown/mouseup events across form
|
| + // controls.
|
| + if (node.isHTMLElement() && toHTMLElement(node).isInteractiveContent())
|
| + return 0;
|
| + return node.parentOrShadowHostNode();
|
| +}
|
| +
|
| bool EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent)
|
| {
|
| RefPtr<FrameView> protector(m_frame->view());
|
| @@ -1676,7 +1685,7 @@ bool EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent)
|
|
|
| bool swallowClickEvent = false;
|
| if (m_clickCount > 0 && !contextMenuEvent && mev.targetNode() && m_clickNode) {
|
| - if (Node* clickTargetNode = mev.targetNode()->commonAncestorOverShadowBoundary(*m_clickNode))
|
| + if (Node* clickTargetNode = mev.targetNode()->commonAncestor(*m_clickNode, parentForClickEvent))
|
| swallowClickEvent = !dispatchMouseEvent(EventTypeNames::click, clickTargetNode, true, m_clickCount, mouseEvent, true);
|
| }
|
|
|
|
|