| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
| 3 * reserved. | 3 * reserved. |
| 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
| 6 * | 6 * |
| 7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
| 8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
| 9 * are met: | 9 * are met: |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 if (is_middle_click_autoscroll_in_progress) { | 645 if (is_middle_click_autoscroll_in_progress) { |
| 646 // We invalidate the click when exiting middle click auto scroll so that | 646 // We invalidate the click when exiting middle click auto scroll so that |
| 647 // we don't inadvertently navigate away from the current page (e.g. the | 647 // we don't inadvertently navigate away from the current page (e.g. the |
| 648 // click was on a hyperlink). See <rdar://problem/6095023>. | 648 // click was on a hyperlink). See <rdar://problem/6095023>. |
| 649 mouse_event_manager_->InvalidateClick(); | 649 mouse_event_manager_->InvalidateClick(); |
| 650 return WebInputEventResult::kHandledSuppressed; | 650 return WebInputEventResult::kHandledSuppressed; |
| 651 } | 651 } |
| 652 } | 652 } |
| 653 | 653 |
| 654 mouse_event_manager_->SetClickCount(mouse_event.click_count); | 654 mouse_event_manager_->SetClickCount(mouse_event.click_count); |
| 655 mouse_event_manager_->SetClickNode( | 655 mouse_event_manager_->SetClickElement( |
| 656 mev.InnerNode()->IsTextNode() | 656 EventHandlingUtil::ParentElementIfNeeded(mev.InnerNode())); |
| 657 ? FlatTreeTraversal::Parent(*mev.InnerNode()) | |
| 658 : mev.InnerNode()); | |
| 659 | 657 |
| 660 if (!mouse_event.FromTouch()) | 658 if (!mouse_event.FromTouch()) |
| 661 frame_->Selection().SetCaretBlinkingSuspended(true); | 659 frame_->Selection().SetCaretBlinkingSuspended(true); |
| 662 | 660 |
| 663 WebInputEventResult event_result = UpdatePointerTargetAndDispatchEvents( | 661 WebInputEventResult event_result = UpdatePointerTargetAndDispatchEvents( |
| 664 EventTypeNames::mousedown, mev.InnerNode(), mev.CanvasRegionId(), | 662 EventTypeNames::mousedown, mev.InnerNode(), mev.CanvasRegionId(), |
| 665 mev.Event(), Vector<WebMouseEvent>()); | 663 mev.Event(), Vector<WebMouseEvent>()); |
| 666 | 664 |
| 667 if (event_result == WebInputEventResult::kNotHandled && frame_->View()) { | 665 if (event_result == WebInputEventResult::kNotHandled && frame_->View()) { |
| 668 FrameView* view = frame_->View(); | 666 FrameView* view = frame_->View(); |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 String(), mouse_event, Vector<WebMouseEvent>()); | 951 String(), mouse_event, Vector<WebMouseEvent>()); |
| 954 } | 952 } |
| 955 | 953 |
| 956 // Mouse events simulated from touch should not hit-test again. | 954 // Mouse events simulated from touch should not hit-test again. |
| 957 ASSERT(!mouse_event.FromTouch()); | 955 ASSERT(!mouse_event.FromTouch()); |
| 958 | 956 |
| 959 HitTestRequest::HitTestRequestType hit_type = HitTestRequest::kRelease; | 957 HitTestRequest::HitTestRequestType hit_type = HitTestRequest::kRelease; |
| 960 HitTestRequest request(hit_type); | 958 HitTestRequest request(hit_type); |
| 961 MouseEventWithHitTestResults mev = | 959 MouseEventWithHitTestResults mev = |
| 962 EventHandlingUtil::PerformMouseEventHitTest(frame_, request, mouse_event); | 960 EventHandlingUtil::PerformMouseEventHitTest(frame_, request, mouse_event); |
| 963 Node* release_node = (mev.InnerNode() && mev.InnerNode()->IsTextNode()) | 961 Element* mouse_release_target = |
| 964 ? FlatTreeTraversal::Parent(*mev.InnerNode()) | 962 EventHandlingUtil::ParentElementIfNeeded(mev.InnerNode()); |
| 965 : mev.InnerNode(); | |
| 966 LocalFrame* subframe = | 963 LocalFrame* subframe = |
| 967 capturing_mouse_events_node_.Get() | 964 capturing_mouse_events_node_.Get() |
| 968 ? SubframeForTargetNode(capturing_mouse_events_node_.Get()) | 965 ? SubframeForTargetNode(capturing_mouse_events_node_.Get()) |
| 969 : SubframeForHitTestResult(mev); | 966 : SubframeForHitTestResult(mev); |
| 970 if (event_handler_will_reset_capturing_mouse_events_node_) | 967 if (event_handler_will_reset_capturing_mouse_events_node_) |
| 971 capturing_mouse_events_node_ = nullptr; | 968 capturing_mouse_events_node_ = nullptr; |
| 972 if (subframe) | 969 if (subframe) |
| 973 return PassMouseReleaseEventToSubframe(mev, subframe); | 970 return PassMouseReleaseEventToSubframe(mev, subframe); |
| 974 | 971 |
| 975 // Mouse events will be associated with the Document where mousedown | 972 // Mouse events will be associated with the Document where mousedown |
| (...skipping 12 matching lines...) Expand all Loading... |
| 988 } else { | 985 } else { |
| 989 gesture_indicator = WTF::WrapUnique(new UserGestureIndicator( | 986 gesture_indicator = WTF::WrapUnique(new UserGestureIndicator( |
| 990 DocumentUserGestureToken::Create(frame_->GetDocument()))); | 987 DocumentUserGestureToken::Create(frame_->GetDocument()))); |
| 991 } | 988 } |
| 992 | 989 |
| 993 WebInputEventResult event_result = UpdatePointerTargetAndDispatchEvents( | 990 WebInputEventResult event_result = UpdatePointerTargetAndDispatchEvents( |
| 994 EventTypeNames::mouseup, mev.InnerNode(), mev.CanvasRegionId(), | 991 EventTypeNames::mouseup, mev.InnerNode(), mev.CanvasRegionId(), |
| 995 mev.Event(), Vector<WebMouseEvent>()); | 992 mev.Event(), Vector<WebMouseEvent>()); |
| 996 | 993 |
| 997 WebInputEventResult click_event_result = | 994 WebInputEventResult click_event_result = |
| 998 mouse_event_manager_->DispatchMouseClickIfNeeded(mev, release_node); | 995 mouse_release_target ? mouse_event_manager_->DispatchMouseClickIfNeeded( |
| 996 mev, *mouse_release_target) |
| 997 : WebInputEventResult::kNotHandled; |
| 999 | 998 |
| 1000 scroll_manager_->ClearResizeScrollableArea(false); | 999 scroll_manager_->ClearResizeScrollableArea(false); |
| 1001 | 1000 |
| 1002 if (event_result == WebInputEventResult::kNotHandled) | 1001 if (event_result == WebInputEventResult::kNotHandled) |
| 1003 event_result = mouse_event_manager_->HandleMouseReleaseEvent(mev); | 1002 event_result = mouse_event_manager_->HandleMouseReleaseEvent(mev); |
| 1004 mouse_event_manager_->ClearDragHeuristicState(); | 1003 mouse_event_manager_->ClearDragHeuristicState(); |
| 1005 | 1004 |
| 1006 mouse_event_manager_->InvalidateClick(); | 1005 mouse_event_manager_->InvalidateClick(); |
| 1007 | 1006 |
| 1008 return EventHandlingUtil::MergeEventResult(click_event_result, event_result); | 1007 return EventHandlingUtil::MergeEventResult(click_event_result, event_result); |
| (...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2113 MouseEventWithHitTestResults& mev, | 2112 MouseEventWithHitTestResults& mev, |
| 2114 LocalFrame* subframe) { | 2113 LocalFrame* subframe) { |
| 2115 WebInputEventResult result = | 2114 WebInputEventResult result = |
| 2116 subframe->GetEventHandler().HandleMouseReleaseEvent(mev.Event()); | 2115 subframe->GetEventHandler().HandleMouseReleaseEvent(mev.Event()); |
| 2117 if (result != WebInputEventResult::kNotHandled) | 2116 if (result != WebInputEventResult::kNotHandled) |
| 2118 return result; | 2117 return result; |
| 2119 return WebInputEventResult::kHandledSystem; | 2118 return WebInputEventResult::kHandledSystem; |
| 2120 } | 2119 } |
| 2121 | 2120 |
| 2122 } // namespace blink | 2121 } // namespace blink |
| OLD | NEW |