OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. |
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1368 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInF latTree()) { | 1368 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInF latTree()) { |
1369 // Updates distribution because a 'mouseup' event listener can make the | 1369 // Updates distribution because a 'mouseup' event listener can make the |
1370 // tree dirty at dispatchMouseEvent() invocation above. | 1370 // tree dirty at dispatchMouseEvent() invocation above. |
1371 // Unless distribution is updated, commonAncestor would hit ASSERT. | 1371 // Unless distribution is updated, commonAncestor would hit ASSERT. |
1372 // Both m_clickNode and mev.innerNode() don't need to be updated | 1372 // Both m_clickNode and mev.innerNode() don't need to be updated |
1373 // because commonAncestor() will exit early if their documents are diffe rent. | 1373 // because commonAncestor() will exit early if their documents are diffe rent. |
1374 m_clickNode->updateDistribution(); | 1374 m_clickNode->updateDistribution(); |
1375 if (Node* clickTargetNode = mev.innerNode()->commonAncestor( | 1375 if (Node* clickTargetNode = mev.innerNode()->commonAncestor( |
1376 *m_clickNode, parentForClickEvent)) { | 1376 *m_clickNode, parentForClickEvent)) { |
1377 | 1377 |
1378 // Dispatch mouseup directly w/o calling updateMouseEventTargetNode | 1378 // For 4th/5th button in the mouse since Chrome does not yet send |
1379 // because the mouseup dispatch above has already updated it | 1379 // button value to Blink but in some cases it does send the event. |
1380 // correctly. Moreover, clickTargetNode is different from | 1380 // This check is needed to suppress such an event (crbug.com/574959) |
1381 // mev.innerNode at drag-release. | 1381 if (mouseEvent.button() == NoButton) { |
1382 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchMo useEvent(mev.event(), | 1382 clickEventResult = WebInputEventResult::HandledSystem; |
1383 EventTypeNames::click, m_clickCount)); | 1383 } else { |
1384 // Dispatch mouseup directly w/o calling updateMouseEventTargetN ode | |
1385 // because the mouseup dispatch above has already updated it | |
1386 // correctly. Moreover, clickTargetNode is different from | |
1387 // mev.innerNode at drag-release. | |
1388 clickEventResult = toWebInputEventResult(clickTargetNode->dispat chMouseEvent(mev.event(), | |
1389 EventTypeNames::click, m_clickCount)); | |
1390 } | |
1384 } | 1391 } |
1385 } | 1392 } |
1386 | 1393 |
1387 if (m_resizeScrollableArea) { | 1394 if (m_resizeScrollableArea) { |
1388 m_resizeScrollableArea->setInResizeMode(false); | 1395 m_resizeScrollableArea->setInResizeMode(false); |
1389 m_resizeScrollableArea = nullptr; | 1396 m_resizeScrollableArea = nullptr; |
1390 } | 1397 } |
1391 | 1398 |
1392 if (eventResult == WebInputEventResult::NotHandled) | 1399 if (eventResult == WebInputEventResult::NotHandled) |
1393 eventResult = handleMouseReleaseEvent(mev); | 1400 eventResult = handleMouseReleaseEvent(mev); |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1673 m_pointerEventManager.elementRemoved(target); | 1680 m_pointerEventManager.elementRemoved(target); |
1674 } | 1681 } |
1675 | 1682 |
1676 // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler. | 1683 // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler. |
1677 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato micString& mouseEventType, Node* targetNode, int clickCount, const PlatformMouse Event& mouseEvent) | 1684 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato micString& mouseEventType, Node* targetNode, int clickCount, const PlatformMouse Event& mouseEvent) |
1678 { | 1685 { |
1679 ASSERT(mouseEventType == EventTypeNames::mousedown | 1686 ASSERT(mouseEventType == EventTypeNames::mousedown |
1680 || mouseEventType == EventTypeNames::mousemove | 1687 || mouseEventType == EventTypeNames::mousemove |
1681 || mouseEventType == EventTypeNames::mouseup); | 1688 || mouseEventType == EventTypeNames::mouseup); |
1682 | 1689 |
1690 // For 4th/5th button in the mouse since Chrome does not yet send | |
1691 // button value to Blink but in some cases it does send the event. | |
1692 // This check is needed to suppress such an event (crbug.com/574959) | |
1693 if (mouseEventType != EventTypeNames::mousemove && mouseEvent.button() == No Button) { | |
dtapuska
2016/03/23 18:37:31
braces aren't needed here
| |
1694 return WebInputEventResult::HandledSystem; | |
1695 } | |
1696 | |
1683 updateMouseEventTargetNode(targetNode, mouseEvent); | 1697 updateMouseEventTargetNode(targetNode, mouseEvent); |
1684 if (!m_nodeUnderMouse) | 1698 if (!m_nodeUnderMouse) |
1685 return WebInputEventResult::NotHandled; | 1699 return WebInputEventResult::NotHandled; |
1686 | 1700 |
1687 return m_pointerEventManager.sendMousePointerEvent( | 1701 return m_pointerEventManager.sendMousePointerEvent( |
1688 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, | 1702 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, |
1689 m_frame->document()->domWindow()); | 1703 m_frame->document()->domWindow()); |
1690 } | 1704 } |
1691 | 1705 |
1692 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) | 1706 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) |
(...skipping 2280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3973 PlatformEvent::Modifiers EventHandler::accessKeyModifiers() | 3987 PlatformEvent::Modifiers EventHandler::accessKeyModifiers() |
3974 { | 3988 { |
3975 #if OS(MACOSX) | 3989 #if OS(MACOSX) |
3976 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo rmEvent::AltKey); | 3990 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo rmEvent::AltKey); |
3977 #else | 3991 #else |
3978 return PlatformEvent::AltKey; | 3992 return PlatformEvent::AltKey; |
3979 #endif | 3993 #endif |
3980 } | 3994 } |
3981 | 3995 |
3982 } // namespace blink | 3996 } // namespace blink |
OLD | NEW |