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 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 return scrollableArea; | 1132 return scrollableArea; |
1133 } | 1133 } |
1134 | 1134 |
1135 return nullptr; | 1135 return nullptr; |
1136 } | 1136 } |
1137 | 1137 |
1138 WebInputEventResult EventHandler::handleMouseMoveEvent(const PlatformMouseEvent&
event) | 1138 WebInputEventResult EventHandler::handleMouseMoveEvent(const PlatformMouseEvent&
event) |
1139 { | 1139 { |
1140 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); | 1140 TRACE_EVENT0("blink", "EventHandler::handleMouseMoveEvent"); |
1141 | 1141 |
1142 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse( | |
1143 event.getModifiers()); | |
1144 | |
1145 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); | 1142 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); |
1146 | 1143 |
1147 HitTestResult hoveredNode = HitTestResult(); | 1144 HitTestResult hoveredNode = HitTestResult(); |
1148 WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode
); | 1145 WebInputEventResult result = handleMouseMoveOrLeaveEvent(event, &hoveredNode
); |
1149 | 1146 |
1150 Page* page = m_frame->page(); | 1147 Page* page = m_frame->page(); |
1151 if (!page) | 1148 if (!page) |
1152 return result; | 1149 return result; |
1153 | 1150 |
1154 if (PaintLayer* layer = layerForNode(hoveredNode.innerNode())) { | 1151 if (PaintLayer* layer = layerForNode(hoveredNode.innerNode())) { |
1155 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer
)) | 1152 if (ScrollableArea* layerScrollableArea = associatedScrollableArea(layer
)) |
1156 layerScrollableArea->mouseMovedInContentArea(); | 1153 layerScrollableArea->mouseMovedInContentArea(); |
1157 } | 1154 } |
1158 | 1155 |
1159 if (FrameView* frameView = m_frame->view()) | 1156 if (FrameView* frameView = m_frame->view()) |
1160 frameView->mouseMovedInContentArea(); | 1157 frameView->mouseMovedInContentArea(); |
1161 | 1158 |
1162 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); | 1159 hoveredNode.setToShadowHostIfInUserAgentShadowRoot(); |
1163 page->chromeClient().mouseDidMoveOverElement(hoveredNode); | 1160 page->chromeClient().mouseDidMoveOverElement(hoveredNode); |
1164 | 1161 |
1165 return result; | 1162 return result; |
1166 } | 1163 } |
1167 | 1164 |
1168 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) | 1165 void EventHandler::handleMouseLeaveEvent(const PlatformMouseEvent& event) |
1169 { | 1166 { |
1170 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); | 1167 TRACE_EVENT0("blink", "EventHandler::handleMouseLeaveEvent"); |
1171 | 1168 |
1172 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse( | |
1173 event.getModifiers()); | |
1174 | |
1175 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); | 1169 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); |
1176 handleMouseMoveOrLeaveEvent(event, 0, false, true); | 1170 handleMouseMoveOrLeaveEvent(event, 0, false, true); |
1177 } | 1171 } |
1178 | 1172 |
1179 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMous
eEvent& mouseEvent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars, bool
forceLeave) | 1173 WebInputEventResult EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMous
eEvent& mouseEvent, HitTestResult* hoveredNode, bool onlyUpdateScrollbars, bool
forceLeave) |
1180 { | 1174 { |
1181 ASSERT(m_frame); | 1175 ASSERT(m_frame); |
1182 ASSERT(m_frame->view()); | 1176 ASSERT(m_frame->view()); |
1183 | 1177 |
1184 setLastKnownMousePosition(mouseEvent); | 1178 setLastKnownMousePosition(mouseEvent); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1249 | 1243 |
1250 WebInputEventResult eventResult = WebInputEventResult::NotHandled; | 1244 WebInputEventResult eventResult = WebInputEventResult::NotHandled; |
1251 RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get(
) ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTest
Result(mev); | 1245 RefPtrWillBeRawPtr<LocalFrame> newSubframe = m_capturingMouseEventsNode.get(
) ? subframeForTargetNode(m_capturingMouseEventsNode.get()) : subframeForHitTest
Result(mev); |
1252 | 1246 |
1253 // We want mouseouts to happen first, from the inside out. First send a mov
e event to the last subframe so that it will fire mouseouts. | 1247 // We want mouseouts to happen first, from the inside out. First send a mov
e event to the last subframe so that it will fire mouseouts. |
1254 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD
escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe) | 1248 if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree().isD
escendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe) |
1255 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent(mev.e
vent()); | 1249 m_lastMouseMoveEventSubframe->eventHandler().handleMouseLeaveEvent(mev.e
vent()); |
1256 | 1250 |
1257 if (newSubframe) { | 1251 if (newSubframe) { |
1258 // Update over/out state before passing the event to the subframe. | 1252 // Update over/out state before passing the event to the subframe. |
1259 updateMouseEventTargetNode(mev.innerNode(), mev.event()); | 1253 updateMouseEventTargetNodeAndSendEvents(mev.innerNode(), mev.event(), tr
ue); |
1260 | 1254 |
1261 // Event dispatch in updateMouseEventTargetNode may have caused the subf
rame of the target | 1255 // Event dispatch in updateMouseEventTargetNodeAndSendEvents may have ca
used the subframe of the target |
1262 // node to be detached from its FrameView, in which case the event shoul
d not be passed. | 1256 // node to be detached from its FrameView, in which case the event shoul
d not be passed. |
1263 if (newSubframe->view()) | 1257 if (newSubframe->view()) |
1264 eventResult = passMouseMoveEventToSubframe(mev, newSubframe.get(), h
overedNode); | 1258 eventResult = passMouseMoveEventToSubframe(mev, newSubframe.get(), h
overedNode); |
1265 } else { | 1259 } else { |
1266 if (scrollbar && !m_mousePressed) | 1260 if (scrollbar && !m_mousePressed) |
1267 scrollbar->mouseMoved(mev.event()); // Handle hover effects on platf
orms that support visual feedback on scrollbar hovering. | 1261 scrollbar->mouseMoved(mev.event()); // Handle hover effects on platf
orms that support visual feedback on scrollbar hovering. |
1268 if (FrameView* view = m_frame->view()) { | 1262 if (FrameView* view = m_frame->view()) { |
1269 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); | 1263 OptionalCursor optionalCursor = selectCursor(mev.hitTestResult()); |
1270 if (optionalCursor.isCursorChange()) { | 1264 if (optionalCursor.isCursorChange()) { |
1271 view->setCursor(optionalCursor.cursor()); | 1265 view->setCursor(optionalCursor.cursor()); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1346 HitTestRequest request(hitType); | 1340 HitTestRequest request(hitType); |
1347 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent); | 1341 MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseEvent); |
1348 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN
ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); | 1342 LocalFrame* subframe = m_capturingMouseEventsNode.get() ? subframeForTargetN
ode(m_capturingMouseEventsNode.get()) : subframeForHitTestResult(mev); |
1349 if (m_eventHandlerWillResetCapturingMouseEventsNode) | 1343 if (m_eventHandlerWillResetCapturingMouseEventsNode) |
1350 m_capturingMouseEventsNode = nullptr; | 1344 m_capturingMouseEventsNode = nullptr; |
1351 if (subframe) | 1345 if (subframe) |
1352 return passMouseReleaseEventToSubframe(mev, subframe); | 1346 return passMouseReleaseEventToSubframe(mev, subframe); |
1353 | 1347 |
1354 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(Event
TypeNames::mouseup, mev.innerNode(), m_clickCount, mev.event()); | 1348 WebInputEventResult eventResult = updatePointerTargetAndDispatchEvents(Event
TypeNames::mouseup, mev.innerNode(), m_clickCount, mev.event()); |
1355 | 1349 |
1356 // TODO(crbug/545647): This state should reset with pointercancel too. | |
1357 m_pointerEventManager.conditionallyEnableMouseEventForPointerTypeMouse( | |
1358 mouseEvent.getModifiers()); | |
1359 | |
1360 bool contextMenuEvent = mouseEvent.button() == RightButton; | 1350 bool contextMenuEvent = mouseEvent.button() == RightButton; |
1361 #if OS(MACOSX) | 1351 #if OS(MACOSX) |
1362 // FIXME: The Mac port achieves the same behavior by checking whether the co
ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl
ementations. | 1352 // FIXME: The Mac port achieves the same behavior by checking whether the co
ntext menu is currently open in WebPage::mouseEvent(). Consider merging the impl
ementations. |
1363 if (mouseEvent.button() == LeftButton && mouseEvent.getModifiers() & Platfor
mEvent::CtrlKey) | 1353 if (mouseEvent.button() == LeftButton && mouseEvent.getModifiers() & Platfor
mEvent::CtrlKey) |
1364 contextMenuEvent = true; | 1354 contextMenuEvent = true; |
1365 #endif | 1355 #endif |
1366 | 1356 |
1367 WebInputEventResult clickEventResult = WebInputEventResult::NotHandled; | 1357 WebInputEventResult clickEventResult = WebInputEventResult::NotHandled; |
1368 if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode
&& mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInF
latTree()) { | 1358 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 | 1359 // Updates distribution because a 'mouseup' event listener can make the |
1370 // tree dirty at dispatchMouseEvent() invocation above. | 1360 // tree dirty at dispatchMouseEvent() invocation above. |
1371 // Unless distribution is updated, commonAncestor would hit ASSERT. | 1361 // Unless distribution is updated, commonAncestor would hit ASSERT. |
1372 // Both m_clickNode and mev.innerNode() don't need to be updated | 1362 // Both m_clickNode and mev.innerNode() don't need to be updated |
1373 // because commonAncestor() will exit early if their documents are diffe
rent. | 1363 // because commonAncestor() will exit early if their documents are diffe
rent. |
1374 m_clickNode->updateDistribution(); | 1364 m_clickNode->updateDistribution(); |
1375 if (Node* clickTargetNode = mev.innerNode()->commonAncestor( | 1365 if (Node* clickTargetNode = mev.innerNode()->commonAncestor( |
1376 *m_clickNode, parentForClickEvent)) { | 1366 *m_clickNode, parentForClickEvent)) { |
1377 | 1367 |
1378 // Dispatch mouseup directly w/o calling updateMouseEventTargetNode | 1368 // Dispatch mouseup directly w/o calling updateMouseEventTargetNodeA
ndSendEvents |
1379 // because the mouseup dispatch above has already updated it | 1369 // because the mouseup dispatch above has already updated it |
1380 // correctly. Moreover, clickTargetNode is different from | 1370 // correctly. Moreover, clickTargetNode is different from |
1381 // mev.innerNode at drag-release. | 1371 // mev.innerNode at drag-release. |
1382 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchMo
useEvent(mev.event(), | 1372 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchMo
useEvent(mev.event(), |
1383 EventTypeNames::click, m_clickCount)); | 1373 EventTypeNames::click, m_clickCount)); |
1384 } | 1374 } |
1385 } | 1375 } |
1386 | 1376 |
1387 if (m_resizeScrollableArea) { | 1377 if (m_resizeScrollableArea) { |
1388 m_resizeScrollableArea->setInResizeMode(false); | 1378 m_resizeScrollableArea->setInResizeMode(false); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1583 } | 1573 } |
1584 | 1574 |
1585 MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques
t& request, const PlatformMouseEvent& mev) | 1575 MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques
t& request, const PlatformMouseEvent& mev) |
1586 { | 1576 { |
1587 ASSERT(m_frame); | 1577 ASSERT(m_frame); |
1588 ASSERT(m_frame->document()); | 1578 ASSERT(m_frame->document()); |
1589 | 1579 |
1590 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF
rame(m_frame, mev.position()), mev); | 1580 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF
rame(m_frame, mev.position()), mev); |
1591 } | 1581 } |
1592 | 1582 |
1593 void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
useEvent& mouseEvent) | 1583 PassRefPtrWillBeRawPtr<Node> EventHandler::updateMouseEventTargetNode(Node* targ
etNode, |
| 1584 const PlatformMouseEvent& mouseEvent) |
1594 { | 1585 { |
1595 Node* result = targetNode; | 1586 Node* result = targetNode; |
1596 | 1587 |
1597 // If we're capturing, we always go right to that node. | 1588 // If we're capturing, we always go right to that node. |
1598 if (m_capturingMouseEventsNode) { | 1589 if (m_capturingMouseEventsNode) { |
1599 result = m_capturingMouseEventsNode.get(); | 1590 result = m_capturingMouseEventsNode.get(); |
1600 } else { | 1591 } else { |
1601 // If the target node is a text node, dispatch on the parent node - rdar
://4196646 | 1592 // If the target node is a text node, dispatch on the parent node - rdar
://4196646 |
1602 if (result && result->isTextNode()) | 1593 if (result && result->isTextNode()) |
1603 result = FlatTreeTraversal::parent(*result); | 1594 result = FlatTreeTraversal::parent(*result); |
(...skipping 27 matching lines...) Expand all Loading... |
1631 // The mouse has moved between layers. | 1622 // The mouse has moved between layers. |
1632 if (ScrollableArea* scrollableAreaForNodeUnderMouse = associatedScrollab
leArea(layerForNodeUnderMouse)) | 1623 if (ScrollableArea* scrollableAreaForNodeUnderMouse = associatedScrollab
leArea(layerForNodeUnderMouse)) |
1633 scrollableAreaForNodeUnderMouse->mouseEnteredContentArea(); | 1624 scrollableAreaForNodeUnderMouse->mouseEnteredContentArea(); |
1634 } | 1625 } |
1635 | 1626 |
1636 if (lastNodeUnderMouse && lastNodeUnderMouse->document() != m_frame->documen
t()) { | 1627 if (lastNodeUnderMouse && lastNodeUnderMouse->document() != m_frame->documen
t()) { |
1637 lastNodeUnderMouse = nullptr; | 1628 lastNodeUnderMouse = nullptr; |
1638 m_lastScrollbarUnderMouse = nullptr; | 1629 m_lastScrollbarUnderMouse = nullptr; |
1639 } | 1630 } |
1640 | 1631 |
1641 m_pointerEventManager.sendNodeTransitionEvents(lastNodeUnderMouse, | 1632 return lastNodeUnderMouse; |
1642 m_nodeUnderMouse, mouseEvent, m_frame->document()->domWindow()); | 1633 } |
| 1634 |
| 1635 void EventHandler::updateMouseEventTargetNodeAndSendEvents(Node* targetNode, |
| 1636 const PlatformMouseEvent& mouseEvent, bool isFrameBoundaryTransition) |
| 1637 { |
| 1638 RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(tar
getNode, mouseEvent); |
| 1639 m_pointerEventManager.sendMouseAndPossiblyPointerNodeTransitionEvents( |
| 1640 lastNodeUnderMouse, m_nodeUnderMouse, mouseEvent, |
| 1641 m_frame->document()->domWindow(), isFrameBoundaryTransition); |
1643 } | 1642 } |
1644 | 1643 |
1645 WebInputEventResult EventHandler::dispatchMouseEvent(const AtomicString& eventTy
pe, Node* targetNode, int clickCount, const PlatformMouseEvent& mouseEvent) | 1644 WebInputEventResult EventHandler::dispatchMouseEvent(const AtomicString& eventTy
pe, Node* targetNode, int clickCount, const PlatformMouseEvent& mouseEvent) |
1646 { | 1645 { |
1647 updateMouseEventTargetNode(targetNode, mouseEvent); | 1646 updateMouseEventTargetNodeAndSendEvents(targetNode, mouseEvent); |
1648 if (!m_nodeUnderMouse) | 1647 if (!m_nodeUnderMouse) |
1649 return WebInputEventResult::NotHandled; | 1648 return WebInputEventResult::NotHandled; |
1650 | 1649 |
1651 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeU
nderMouse->document().domWindow(), mouseEvent, clickCount, nullptr); | 1650 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeU
nderMouse->document().domWindow(), mouseEvent, clickCount, nullptr); |
1652 return toWebInputEventResult(m_nodeUnderMouse->dispatchEvent(event)); | 1651 return toWebInputEventResult(m_nodeUnderMouse->dispatchEvent(event)); |
1653 } | 1652 } |
1654 | 1653 |
1655 bool EventHandler::isPointerEventActive(int pointerId) | 1654 bool EventHandler::isPointerEventActive(int pointerId) |
1656 { | 1655 { |
1657 return m_pointerEventManager.isActive(pointerId); | 1656 return m_pointerEventManager.isActive(pointerId); |
(...skipping 15 matching lines...) Expand all Loading... |
1673 m_pointerEventManager.elementRemoved(target); | 1672 m_pointerEventManager.elementRemoved(target); |
1674 } | 1673 } |
1675 | 1674 |
1676 // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler. | 1675 // 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) | 1676 WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato
micString& mouseEventType, Node* targetNode, int clickCount, const PlatformMouse
Event& mouseEvent) |
1678 { | 1677 { |
1679 ASSERT(mouseEventType == EventTypeNames::mousedown | 1678 ASSERT(mouseEventType == EventTypeNames::mousedown |
1680 || mouseEventType == EventTypeNames::mousemove | 1679 || mouseEventType == EventTypeNames::mousemove |
1681 || mouseEventType == EventTypeNames::mouseup); | 1680 || mouseEventType == EventTypeNames::mouseup); |
1682 | 1681 |
1683 updateMouseEventTargetNode(targetNode, mouseEvent); | 1682 RefPtrWillBeRawPtr<Node> lastNodeUnderMouse = updateMouseEventTargetNode(tar
getNode, mouseEvent); |
1684 if (!m_nodeUnderMouse) | |
1685 return WebInputEventResult::NotHandled; | |
1686 | 1683 |
1687 return m_pointerEventManager.sendMousePointerEvent( | 1684 return m_pointerEventManager.sendMousePointerEvent( |
1688 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, | 1685 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, |
1689 m_frame->document()->domWindow()); | 1686 m_frame->document()->domWindow(), lastNodeUnderMouse); |
1690 } | 1687 } |
1691 | 1688 |
1692 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe
sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) | 1689 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe
sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) |
1693 { | 1690 { |
1694 // If clicking on a frame scrollbar, do not mess up with content focus. | 1691 // If clicking on a frame scrollbar, do not mess up with content focus. |
1695 if (targetedEvent.hitTestResult().scrollbar() && m_frame->contentLayoutObjec
t()) { | 1692 if (targetedEvent.hitTestResult().scrollbar() && m_frame->contentLayoutObjec
t()) { |
1696 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_
frame->contentLayoutObject()->getScrollableArea()) | 1693 if (targetedEvent.hitTestResult().scrollbar()->getScrollableArea() == m_
frame->contentLayoutObject()->getScrollableArea()) |
1697 return WebInputEventResult::NotHandled; | 1694 return WebInputEventResult::NotHandled; |
1698 } | 1695 } |
1699 | 1696 |
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2634 unsigned modifiers = gestureEvent.getModifiers(); | 2631 unsigned modifiers = gestureEvent.getModifiers(); |
2635 PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globa
lPosition(), | 2632 PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globa
lPosition(), |
2636 NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0, | 2633 NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0, |
2637 static_cast<PlatformEvent::Modifiers>(modifiers), | 2634 static_cast<PlatformEvent::Modifiers>(modifiers), |
2638 PlatformMouseEvent::FromTouch, gestureEvent.timestamp(), WebPointerPrope
rties::PointerType::Mouse); | 2635 PlatformMouseEvent::FromTouch, gestureEvent.timestamp(), WebPointerPrope
rties::PointerType::Mouse); |
2639 | 2636 |
2640 // Update the mouseout/mouseleave event | 2637 // Update the mouseout/mouseleave event |
2641 size_t indexExitedFrameChain = exitedFrameChain.size(); | 2638 size_t indexExitedFrameChain = exitedFrameChain.size(); |
2642 while (indexExitedFrameChain) { | 2639 while (indexExitedFrameChain) { |
2643 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain]; | 2640 LocalFrame* leaveFrame = exitedFrameChain[--indexExitedFrameChain]; |
2644 leaveFrame->eventHandler().updateMouseEventTargetNode(nullptr, fakeMouse
Move); | 2641 leaveFrame->eventHandler().updateMouseEventTargetNodeAndSendEvents(nullp
tr, fakeMouseMove); |
2645 } | 2642 } |
2646 | 2643 |
2647 // update the mouseover/mouseenter event | 2644 // update the mouseover/mouseenter event |
2648 while (indexEnteredFrameChain) { | 2645 while (indexEnteredFrameChain) { |
2649 Frame* parentFrame = enteredFrameChain[--indexEnteredFrameChain]->tree()
.parent(); | 2646 Frame* parentFrame = enteredFrameChain[--indexEnteredFrameChain]->tree()
.parent(); |
2650 if (parentFrame && parentFrame->isLocalFrame()) | 2647 if (parentFrame && parentFrame->isLocalFrame()) |
2651 toLocalFrame(parentFrame)->eventHandler().updateMouseEventTargetNode
(toHTMLFrameOwnerElement(enteredFrameChain[indexEnteredFrameChain]->owner()), fa
keMouseMove); | 2648 toLocalFrame(parentFrame)->eventHandler().updateMouseEventTargetNode
AndSendEvents(toHTMLFrameOwnerElement(enteredFrameChain[indexEnteredFrameChain]-
>owner()), fakeMouseMove); |
2652 } | 2649 } |
2653 } | 2650 } |
2654 | 2651 |
2655 GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe
stureEvent& gestureEvent, bool readOnly) | 2652 GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe
stureEvent& gestureEvent, bool readOnly) |
2656 { | 2653 { |
2657 TRACE_EVENT0("input", "EventHandler::targetGestureEvent"); | 2654 TRACE_EVENT0("input", "EventHandler::targetGestureEvent"); |
2658 | 2655 |
2659 ASSERT(m_frame == m_frame->localFrameRoot()); | 2656 ASSERT(m_frame == m_frame->localFrameRoot()); |
2660 // Scrolling events get hit tested per frame (like wheel events do). | 2657 // Scrolling events get hit tested per frame (like wheel events do). |
2661 ASSERT(!gestureEvent.isScrollEvent()); | 2658 ASSERT(!gestureEvent.isScrollEvent()); |
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3969 PlatformEvent::Modifiers EventHandler::accessKeyModifiers() | 3966 PlatformEvent::Modifiers EventHandler::accessKeyModifiers() |
3970 { | 3967 { |
3971 #if OS(MACOSX) | 3968 #if OS(MACOSX) |
3972 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo
rmEvent::AltKey); | 3969 return static_cast<PlatformEvent::Modifiers>(PlatformEvent::CtrlKey | Platfo
rmEvent::AltKey); |
3973 #else | 3970 #else |
3974 return PlatformEvent::AltKey; | 3971 return PlatformEvent::AltKey; |
3975 #endif | 3972 #endif |
3976 } | 3973 } |
3977 | 3974 |
3978 } // namespace blink | 3975 } // namespace blink |
OLD | NEW |