| 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 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 { | 429 { |
| 430 selectionController().updateSelectionForMouseDrag(m_mousePressNode.get(), m_
dragStartPos, m_lastKnownMousePosition); | 430 selectionController().updateSelectionForMouseDrag(m_mousePressNode.get(), m_
dragStartPos, m_lastKnownMousePosition); |
| 431 } | 431 } |
| 432 | 432 |
| 433 WebInputEventResult EventHandler::handleMouseReleaseEvent(const MouseEventWithHi
tTestResults& event) | 433 WebInputEventResult EventHandler::handleMouseReleaseEvent(const MouseEventWithHi
tTestResults& event) |
| 434 { | 434 { |
| 435 AutoscrollController* controller = m_scrollManager.autoscrollController(); | 435 AutoscrollController* controller = m_scrollManager.autoscrollController(); |
| 436 if (controller && controller->autoscrollInProgress()) | 436 if (controller && controller->autoscrollInProgress()) |
| 437 m_scrollManager.stopAutoscroll(); | 437 m_scrollManager.stopAutoscroll(); |
| 438 | 438 |
| 439 // Used to prevent mouseMoveEvent from initiating a drag before | |
| 440 // the mouse is pressed again. | |
| 441 m_mousePressed = false; | |
| 442 m_capturesDragging = false; | |
| 443 m_mouseDownMayStartDrag = false; | |
| 444 m_mouseDownMayStartAutoscroll = false; | |
| 445 | |
| 446 return selectionController().handleMouseReleaseEvent(event, m_dragStartPos)
? WebInputEventResult::HandledSystem : WebInputEventResult::NotHandled; | 439 return selectionController().handleMouseReleaseEvent(event, m_dragStartPos)
? WebInputEventResult::HandledSystem : WebInputEventResult::NotHandled; |
| 447 } | 440 } |
| 448 | 441 |
| 449 #if OS(WIN) | 442 #if OS(WIN) |
| 450 | 443 |
| 451 void EventHandler::startPanScrolling(LayoutObject* layoutObject) | 444 void EventHandler::startPanScrolling(LayoutObject* layoutObject) |
| 452 { | 445 { |
| 453 if (!layoutObject->isBox()) | 446 if (!layoutObject->isBox()) |
| 454 return; | 447 return; |
| 455 AutoscrollController* controller = m_scrollManager.autoscrollController(); | 448 AutoscrollController* controller = m_scrollManager.autoscrollController(); |
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1205 event->stopPropagation(); | 1198 event->stopPropagation(); |
| 1206 | 1199 |
| 1207 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchEv
ent(event)); | 1200 clickEventResult = toWebInputEventResult(clickTargetNode->dispatchEv
ent(event)); |
| 1208 } | 1201 } |
| 1209 } | 1202 } |
| 1210 | 1203 |
| 1211 m_scrollManager.clearResizeScrollableArea(false); | 1204 m_scrollManager.clearResizeScrollableArea(false); |
| 1212 | 1205 |
| 1213 if (eventResult == WebInputEventResult::NotHandled) | 1206 if (eventResult == WebInputEventResult::NotHandled) |
| 1214 eventResult = handleMouseReleaseEvent(mev); | 1207 eventResult = handleMouseReleaseEvent(mev); |
| 1208 clearDragHeuristicState(); |
| 1215 | 1209 |
| 1216 invalidateClick(); | 1210 invalidateClick(); |
| 1217 | 1211 |
| 1218 return mergeEventResult(clickEventResult, eventResult); | 1212 return mergeEventResult(clickEventResult, eventResult); |
| 1219 } | 1213 } |
| 1220 | 1214 |
| 1221 WebInputEventResult EventHandler::dispatchDragEvent(const AtomicString& eventTyp
e, Node* dragTarget, const PlatformMouseEvent& event, DataTransfer* dataTransfer
) | 1215 WebInputEventResult EventHandler::dispatchDragEvent(const AtomicString& eventTyp
e, Node* dragTarget, const PlatformMouseEvent& event, DataTransfer* dataTransfer
) |
| 1222 { | 1216 { |
| 1223 FrameView* view = m_frame->view(); | 1217 FrameView* view = m_frame->view(); |
| 1224 | 1218 |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 if (targetIsFrame(m_dragTarget.get(), targetFrame)) { | 1376 if (targetIsFrame(m_dragTarget.get(), targetFrame)) { |
| 1383 if (targetFrame) | 1377 if (targetFrame) |
| 1384 result = targetFrame->eventHandler().performDragAndDrop(event, dataT
ransfer); | 1378 result = targetFrame->eventHandler().performDragAndDrop(event, dataT
ransfer); |
| 1385 } else if (m_dragTarget.get()) { | 1379 } else if (m_dragTarget.get()) { |
| 1386 result = dispatchDragEvent(EventTypeNames::drop, m_dragTarget.get(), eve
nt, dataTransfer); | 1380 result = dispatchDragEvent(EventTypeNames::drop, m_dragTarget.get(), eve
nt, dataTransfer); |
| 1387 } | 1381 } |
| 1388 clearDragState(); | 1382 clearDragState(); |
| 1389 return result; | 1383 return result; |
| 1390 } | 1384 } |
| 1391 | 1385 |
| 1386 void EventHandler::clearDragHeuristicState() |
| 1387 { |
| 1388 // Used to prevent mouseMoveEvent from initiating a drag before |
| 1389 // the mouse is pressed again. |
| 1390 m_mousePressed = false; |
| 1391 m_capturesDragging = false; |
| 1392 m_mouseDownMayStartDrag = false; |
| 1393 m_mouseDownMayStartAutoscroll = false; |
| 1394 } |
| 1395 |
| 1392 void EventHandler::clearDragState() | 1396 void EventHandler::clearDragState() |
| 1393 { | 1397 { |
| 1394 m_scrollManager.stopAutoscroll(); | 1398 m_scrollManager.stopAutoscroll(); |
| 1395 m_dragTarget = nullptr; | 1399 m_dragTarget = nullptr; |
| 1396 m_capturingMouseEventsNode = nullptr; | 1400 m_capturingMouseEventsNode = nullptr; |
| 1397 m_shouldOnlyFireDragOverEvent = false; | 1401 m_shouldOnlyFireDragOverEvent = false; |
| 1398 } | 1402 } |
| 1399 | 1403 |
| 1400 void EventHandler::setCapturingMouseEventsNode(Node* n) | 1404 void EventHandler::setCapturingMouseEventsNode(Node* n) |
| 1401 { | 1405 { |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1867 // because commonAncestor() will exit early if their documents are d
ifferent. | 1871 // because commonAncestor() will exit early if their documents are d
ifferent. |
| 1868 m_clickNode->updateDistribution(); | 1872 m_clickNode->updateDistribution(); |
| 1869 Node* clickTargetNode = currentHitTest.innerNode()->commonAncestor(*
m_clickNode, parentForClickEvent); | 1873 Node* clickTargetNode = currentHitTest.innerNode()->commonAncestor(*
m_clickNode, parentForClickEvent); |
| 1870 clickEventResult = dispatchMouseEvent(EventTypeNames::click, clickTa
rgetNode, gestureEvent.tapCount(), fakeMouseUp); | 1874 clickEventResult = dispatchMouseEvent(EventTypeNames::click, clickTa
rgetNode, gestureEvent.tapCount(), fakeMouseUp); |
| 1871 } | 1875 } |
| 1872 m_clickNode = nullptr; | 1876 m_clickNode = nullptr; |
| 1873 } | 1877 } |
| 1874 | 1878 |
| 1875 if (mouseUpEventResult == WebInputEventResult::NotHandled) | 1879 if (mouseUpEventResult == WebInputEventResult::NotHandled) |
| 1876 mouseUpEventResult = handleMouseReleaseEvent(MouseEventWithHitTestResult
s(fakeMouseUp, currentHitTest)); | 1880 mouseUpEventResult = handleMouseReleaseEvent(MouseEventWithHitTestResult
s(fakeMouseUp, currentHitTest)); |
| 1881 clearDragHeuristicState(); |
| 1877 | 1882 |
| 1878 WebInputEventResult eventResult = mergeEventResult(mergeEventResult(mouseDow
nEventResult, mouseUpEventResult), clickEventResult); | 1883 WebInputEventResult eventResult = mergeEventResult(mergeEventResult(mouseDow
nEventResult, mouseUpEventResult), clickEventResult); |
| 1879 if (eventResult == WebInputEventResult::NotHandled && tappedNode && m_frame-
>page()) { | 1884 if (eventResult == WebInputEventResult::NotHandled && tappedNode && m_frame-
>page()) { |
| 1880 bool domTreeChanged = preDispatchDomTreeVersion != m_frame->document()->
domTreeVersion(); | 1885 bool domTreeChanged = preDispatchDomTreeVersion != m_frame->document()->
domTreeVersion(); |
| 1881 bool styleChanged = preDispatchStyleVersion != m_frame->document()->styl
eVersion(); | 1886 bool styleChanged = preDispatchStyleVersion != m_frame->document()->styl
eVersion(); |
| 1882 | 1887 |
| 1883 IntPoint tappedPositionInViewport = frameHost()->visualViewport().rootFr
ameToViewport(tappedPosition); | 1888 IntPoint tappedPositionInViewport = frameHost()->visualViewport().rootFr
ameToViewport(tappedPosition); |
| 1884 m_frame->chromeClient().showUnhandledTapUIIfNeeded(tappedPositionInViewp
ort, tappedNode, domTreeChanged || styleChanged); | 1889 m_frame->chromeClient().showUnhandledTapUIIfNeeded(tappedPositionInViewp
ort, tappedNode, domTreeChanged || styleChanged); |
| 1885 } | 1890 } |
| 1886 return eventResult; | 1891 return eventResult; |
| (...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2850 | 2855 |
| 2851 FrameHost* EventHandler::frameHost() const | 2856 FrameHost* EventHandler::frameHost() const |
| 2852 { | 2857 { |
| 2853 if (!m_frame->page()) | 2858 if (!m_frame->page()) |
| 2854 return nullptr; | 2859 return nullptr; |
| 2855 | 2860 |
| 2856 return &m_frame->page()->frameHost(); | 2861 return &m_frame->page()->frameHost(); |
| 2857 } | 2862 } |
| 2858 | 2863 |
| 2859 } // namespace blink | 2864 } // namespace blink |
| OLD | NEW |