Chromium Code Reviews| Index: third_party/WebKit/Source/core/input/EventHandler.cpp |
| diff --git a/third_party/WebKit/Source/core/input/EventHandler.cpp b/third_party/WebKit/Source/core/input/EventHandler.cpp |
| index 6b7dbae6315f52828a398c5d4a45c876dbe87ed4..dfc65652a42d212bd4565b4cf473eb755afd4221 100644 |
| --- a/third_party/WebKit/Source/core/input/EventHandler.cpp |
| +++ b/third_party/WebKit/Source/core/input/EventHandler.cpp |
| @@ -253,8 +253,8 @@ void EventHandler::StartMiddleClickAutoscroll(LayoutObject* layout_object) { |
| if (!controller) |
| return; |
| controller->StartMiddleClickAutoscroll( |
| - ToLayoutBox(layout_object), |
| - mouse_event_manager_->LastKnownMousePosition()); |
| + layout_object->GetFrame(), mouse_event_manager_->LastKnownMousePosition(), |
| + mouse_event_manager_->LastKnownMousePositionGlobal()); |
| mouse_event_manager_->InvalidateClick(); |
| } |
| @@ -309,6 +309,7 @@ HitTestResult EventHandler::HitTestResultAtPoint( |
| } |
| void EventHandler::StopAutoscroll() { |
| + scroll_manager_->StopMiddleClickAutoscroll(); |
| scroll_manager_->StopAutoscroll(); |
| } |
| @@ -650,7 +651,7 @@ WebInputEventResult EventHandler::HandleMousePressEvent( |
| // return. |
| bool is_middle_click_autoscroll_in_progress = |
| scroll_manager_->MiddleClickAutoscrollInProgress(); |
| - scroll_manager_->StopAutoscroll(); |
| + scroll_manager_->StopMiddleClickAutoscroll(); |
| if (is_middle_click_autoscroll_in_progress) { |
| // We invalidate the click when exiting middle click auto scroll so that |
| // we don't inadvertently navigate away from the current page (e.g. the |
| @@ -805,6 +806,19 @@ WebInputEventResult EventHandler::HandleMouseMoveOrLeaveEvent( |
| mouse_event_manager_->CancelFakeMouseMoveEvent(); |
| mouse_event_manager_->HandleSvgPanIfNeeded(false); |
| + if (RuntimeEnabledFeatures::MiddleClickAutoscrollEnabled()) { |
| + if (Page* page = frame_->GetPage()) { |
| + if (mouse_event.GetType() == WebInputEvent::kMouseLeave && |
| + mouse_event.button != WebPointerProperties::Button::kMiddle) { |
|
bokan
2017/06/15 17:40:12
Does this mean that if the cursor leaves the windo
aelias_OOO_until_Jul13
2017/06/15 22:19:54
Yes, that's the preexisting behavior.
|
| + page->GetAutoscrollController().StopMiddleClickAutoscroll(frame_); |
| + } else { |
| + page->GetAutoscrollController().HandleMouseMoveForMiddleClickAutoscroll( |
| + frame_, mouse_event_manager_->LastKnownMousePositionGlobal(), |
| + mouse_event.button == WebPointerProperties::Button::kMiddle); |
| + } |
| + } |
| + } |
| + |
| if (frame_set_being_resized_) { |
| return UpdatePointerTargetAndDispatchEvents( |
| EventTypeNames::mousemove, frame_set_being_resized_.Get(), String(), |
| @@ -936,9 +950,12 @@ WebInputEventResult EventHandler::HandleMouseReleaseEvent( |
| frame_->Selection().SetCaretBlinkingSuspended(false); |
| if (RuntimeEnabledFeatures::MiddleClickAutoscrollEnabled()) { |
| - if (Page* page = frame_->GetPage()) |
| + if (Page* page = frame_->GetPage()) { |
| page->GetAutoscrollController() |
| - .HandleMouseReleaseForMiddleClickAutoscroll(frame_, mouse_event); |
| + .HandleMouseReleaseForMiddleClickAutoscroll( |
| + frame_, |
| + mouse_event.button == WebPointerProperties::Button::kMiddle); |
| + } |
| } |
| mouse_event_manager_->SetMousePressed(false); |