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 681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 | 692 |
693 if (handleDrag(event, ShouldCheckDragHysteresis)) | 693 if (handleDrag(event, ShouldCheckDragHysteresis)) |
694 return true; | 694 return true; |
695 | 695 |
696 Node* targetNode = event.targetNode(); | 696 Node* targetNode = event.targetNode(); |
697 if (event.event().button() != LeftButton || !targetNode) | 697 if (event.event().button() != LeftButton || !targetNode) |
698 return false; | 698 return false; |
699 | 699 |
700 RenderObject* renderer = targetNode->renderer(); | 700 RenderObject* renderer = targetNode->renderer(); |
701 if (!renderer) { | 701 if (!renderer) { |
702 Node* parent = EventPath::parent(targetNode); | 702 Node* parent = NodeRenderingTraversal::parent(targetNode); |
703 if (!parent) | 703 if (!parent) |
704 return false; | 704 return false; |
705 | 705 |
706 renderer = parent->renderer(); | 706 renderer = parent->renderer(); |
707 if (!renderer || !renderer->isListBox()) | 707 if (!renderer || !renderer->isListBox()) |
708 return false; | 708 return false; |
709 } | 709 } |
710 | 710 |
711 m_mouseDownMayStartDrag = false; | 711 m_mouseDownMayStartDrag = false; |
712 | 712 |
(...skipping 1081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1794 | 1794 |
1795 if (!m_frame->view()) | 1795 if (!m_frame->view()) |
1796 return false; | 1796 return false; |
1797 | 1797 |
1798 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::ConfusingA
ndOftenMisusedDisallowShadowContent); | 1798 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::ConfusingA
ndOftenMisusedDisallowShadowContent); |
1799 MouseEventWithHitTestResults mev = prepareMouseEvent(request, event); | 1799 MouseEventWithHitTestResults mev = prepareMouseEvent(request, event); |
1800 | 1800 |
1801 // Drag events should never go to text nodes (following IE, and proper mouse
over/out dispatch) | 1801 // Drag events should never go to text nodes (following IE, and proper mouse
over/out dispatch) |
1802 RefPtr<Node> newTarget = mev.targetNode(); | 1802 RefPtr<Node> newTarget = mev.targetNode(); |
1803 if (newTarget && newTarget->isTextNode()) | 1803 if (newTarget && newTarget->isTextNode()) |
1804 newTarget = EventPath::parent(newTarget.get()); | 1804 newTarget = NodeRenderingTraversal::parent(newTarget.get()); |
1805 | 1805 |
1806 if (AutoscrollController* controller = autoscrollController()) | 1806 if (AutoscrollController* controller = autoscrollController()) |
1807 controller->updateDragAndDrop(newTarget.get(), event.position(), event.t
imestamp()); | 1807 controller->updateDragAndDrop(newTarget.get(), event.position(), event.t
imestamp()); |
1808 | 1808 |
1809 if (m_dragTarget != newTarget) { | 1809 if (m_dragTarget != newTarget) { |
1810 // FIXME: this ordering was explicitly chosen to match WinIE. However, | 1810 // FIXME: this ordering was explicitly chosen to match WinIE. However, |
1811 // it is sometimes incorrect when dragging within subframes, as seen wit
h | 1811 // it is sometimes incorrect when dragging within subframes, as seen wit
h |
1812 // LayoutTests/fast/events/drag-in-frames.html. | 1812 // LayoutTests/fast/events/drag-in-frames.html. |
1813 // | 1813 // |
1814 // Moreover, this ordering conforms to section 7.9.4 of the HTML 5 spec.
<http://dev.w3.org/html5/spec/Overview.html#drag-and-drop-processing-model>. | 1814 // Moreover, this ordering conforms to section 7.9.4 of the HTML 5 spec.
<http://dev.w3.org/html5/spec/Overview.html#drag-and-drop-processing-model>. |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1928 void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
useEvent& mouseEvent, bool fireMouseOverOut) | 1928 void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
useEvent& mouseEvent, bool fireMouseOverOut) |
1929 { | 1929 { |
1930 Node* result = targetNode; | 1930 Node* result = targetNode; |
1931 | 1931 |
1932 // If we're capturing, we always go right to that node. | 1932 // If we're capturing, we always go right to that node. |
1933 if (m_capturingMouseEventsNode) | 1933 if (m_capturingMouseEventsNode) |
1934 result = m_capturingMouseEventsNode.get(); | 1934 result = m_capturingMouseEventsNode.get(); |
1935 else { | 1935 else { |
1936 // If the target node is a text node, dispatch on the parent node - rdar
://4196646 | 1936 // If the target node is a text node, dispatch on the parent node - rdar
://4196646 |
1937 if (result && result->isTextNode()) | 1937 if (result && result->isTextNode()) |
1938 result = EventPath::parent(result); | 1938 result = NodeRenderingTraversal::parent(result); |
1939 } | 1939 } |
1940 m_nodeUnderMouse = result; | 1940 m_nodeUnderMouse = result; |
1941 m_instanceUnderMouse = instanceAssociatedWithShadowTreeElement(result); | 1941 m_instanceUnderMouse = instanceAssociatedWithShadowTreeElement(result); |
1942 | 1942 |
1943 // <use> shadow tree elements may have been recloned, update node under mous
e in any case | 1943 // <use> shadow tree elements may have been recloned, update node under mous
e in any case |
1944 if (m_lastInstanceUnderMouse) { | 1944 if (m_lastInstanceUnderMouse) { |
1945 SVGElement* lastCorrespondingElement = m_lastInstanceUnderMouse->corresp
ondingElement(); | 1945 SVGElement* lastCorrespondingElement = m_lastInstanceUnderMouse->corresp
ondingElement(); |
1946 SVGElement* lastCorrespondingUseElement = m_lastInstanceUnderMouse->corr
espondingUseElement(); | 1946 SVGElement* lastCorrespondingUseElement = m_lastInstanceUnderMouse->corr
espondingUseElement(); |
1947 | 1947 |
1948 if (lastCorrespondingElement && lastCorrespondingUseElement) { | 1948 if (lastCorrespondingElement && lastCorrespondingUseElement) { |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2136 | 2136 |
2137 LayoutPoint vPoint = view->windowToContents(e.position()); | 2137 LayoutPoint vPoint = view->windowToContents(e.position()); |
2138 | 2138 |
2139 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::ConfusingA
ndOftenMisusedDisallowShadowContent); | 2139 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::ConfusingA
ndOftenMisusedDisallowShadowContent); |
2140 HitTestResult result(vPoint); | 2140 HitTestResult result(vPoint); |
2141 doc->renderView()->hitTest(request, result); | 2141 doc->renderView()->hitTest(request, result); |
2142 | 2142 |
2143 Node* node = result.innerNode(); | 2143 Node* node = result.innerNode(); |
2144 // Wheel events should not dispatch to text nodes. | 2144 // Wheel events should not dispatch to text nodes. |
2145 if (node && node->isTextNode()) | 2145 if (node && node->isTextNode()) |
2146 node = EventPath::parent(node); | 2146 node = NodeRenderingTraversal::parent(node); |
2147 | 2147 |
2148 bool isOverWidget; | 2148 bool isOverWidget; |
2149 if (e.useLatchedEventNode()) { | 2149 if (e.useLatchedEventNode()) { |
2150 if (!m_latchedWheelEventNode) { | 2150 if (!m_latchedWheelEventNode) { |
2151 m_latchedWheelEventNode = node; | 2151 m_latchedWheelEventNode = node; |
2152 m_widgetIsLatched = result.isOverWidget(); | 2152 m_widgetIsLatched = result.isOverWidget(); |
2153 } else | 2153 } else |
2154 node = m_latchedWheelEventNode.get(); | 2154 node = m_latchedWheelEventNode.get(); |
2155 | 2155 |
2156 isOverWidget = m_widgetIsLatched; | 2156 isOverWidget = m_widgetIsLatched; |
(...skipping 1500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3657 result = hitTestResultInFrame(m_originatingTouchPointDocument->f
rame(), pagePointInOriginatingDocument, hitType); | 3657 result = hitTestResultInFrame(m_originatingTouchPointDocument->f
rame(), pagePointInOriginatingDocument, hitType); |
3658 } else | 3658 } else |
3659 continue; | 3659 continue; |
3660 | 3660 |
3661 Node* node = result.innerNode(); | 3661 Node* node = result.innerNode(); |
3662 if (!node) | 3662 if (!node) |
3663 continue; | 3663 continue; |
3664 | 3664 |
3665 // Touch events should not go to text nodes | 3665 // Touch events should not go to text nodes |
3666 if (node->isTextNode()) | 3666 if (node->isTextNode()) |
3667 node = EventPath::parent(node); | 3667 node = NodeRenderingTraversal::parent(node); |
3668 | 3668 |
3669 Document& doc = node->document(); | 3669 Document& doc = node->document(); |
3670 // Record the originating touch document even if it does not have a
touch listener. | 3670 // Record the originating touch document even if it does not have a
touch listener. |
3671 if (freshTouchEvents) { | 3671 if (freshTouchEvents) { |
3672 m_originatingTouchPointDocument = &doc; | 3672 m_originatingTouchPointDocument = &doc; |
3673 freshTouchEvents = false; | 3673 freshTouchEvents = false; |
3674 } | 3674 } |
3675 if (!doc.hasTouchEventHandlers()) | 3675 if (!doc.hasTouchEventHandlers()) |
3676 continue; | 3676 continue; |
3677 m_originatingTouchPointTargets.set(touchPointTargetKey, node); | 3677 m_originatingTouchPointTargets.set(touchPointTargetKey, node); |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4024 unsigned EventHandler::accessKeyModifiers() | 4024 unsigned EventHandler::accessKeyModifiers() |
4025 { | 4025 { |
4026 #if OS(MACOSX) | 4026 #if OS(MACOSX) |
4027 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 4027 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
4028 #else | 4028 #else |
4029 return PlatformEvent::AltKey; | 4029 return PlatformEvent::AltKey; |
4030 #endif | 4030 #endif |
4031 } | 4031 } |
4032 | 4032 |
4033 } // namespace WebCore | 4033 } // namespace WebCore |
OLD | NEW |