diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2018-01-19 16:55:12 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2018-01-22 07:23:26 +0000 |
commit | 8311adf4675e12a8306e2f0b94d822df7e192660 (patch) | |
tree | fe1361899c52b54cee51f22167deccf7d5abdf60 | |
parent | bfc5b64de44631c35094ceebf0f2545b7b1b9640 (diff) | |
download | qtwebengine-chromium-8311adf4675e12a8306e2f0b94d822df7e192660.tar.gz |
[Backport] Reset the last known mouse mousing on MouseLeave
Reset the last known mouse position to be unknown when we get a mouse
leave or when the target of an iframe changes.
BUG=788690
Reviewed-on: https://chromium-review.googlesource.com/814696
Reviewed-by: Navid Zolghadr <nzolghadr@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#522877}
Change-Id: Ia02e3a554cb14a7c32ce81308ff82f80cfab392d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
3 files changed, 8 insertions, 1 deletions
diff --git a/chromium/third_party/WebKit/Source/core/input/EventHandler.cpp b/chromium/third_party/WebKit/Source/core/input/EventHandler.cpp index 145809951bf..fd1038dc2ee 100644 --- a/chromium/third_party/WebKit/Source/core/input/EventHandler.cpp +++ b/chromium/third_party/WebKit/Source/core/input/EventHandler.cpp @@ -893,6 +893,8 @@ WebInputEventResult EventHandler::HandleMouseMoveOrLeaveEvent( last_mouse_move_event_subframe_ != new_subframe) { last_mouse_move_event_subframe_->GetEventHandler().HandleMouseLeaveEvent( mev.Event()); + last_mouse_move_event_subframe_->GetEventHandler() + .mouse_event_manager_->SetLastMousePositionAsUnknown(); } if (new_subframe) { diff --git a/chromium/third_party/WebKit/Source/core/input/MouseEventManager.cpp b/chromium/third_party/WebKit/Source/core/input/MouseEventManager.cpp index 9ac9bf3478a..607ec9a47e0 100644 --- a/chromium/third_party/WebKit/Source/core/input/MouseEventManager.cpp +++ b/chromium/third_party/WebKit/Source/core/input/MouseEventManager.cpp @@ -583,11 +583,15 @@ FloatPoint MouseEventManager::LastKnownMousePositionGlobal() { } void MouseEventManager::SetLastKnownMousePosition(const WebMouseEvent& event) { - is_mouse_position_unknown_ = false; + is_mouse_position_unknown_ = event.GetType() == WebInputEvent::kMouseLeave; last_known_mouse_position_ = event.PositionInRootFrame(); last_known_mouse_global_position_ = event.PositionInScreen(); } +void MouseEventManager::SetLastMousePositionAsUnknown() { + is_mouse_position_unknown_ = true; +} + void MouseEventManager::DispatchFakeMouseMoveEventSoon( MouseEventManager::FakeMouseMoveReason fake_mouse_move_reason) { if (fake_mouse_move_reason == diff --git a/chromium/third_party/WebKit/Source/core/input/MouseEventManager.h b/chromium/third_party/WebKit/Source/core/input/MouseEventManager.h index 02d61cd3ac6..6f56ed44ee7 100644 --- a/chromium/third_party/WebKit/Source/core/input/MouseEventManager.h +++ b/chromium/third_party/WebKit/Source/core/input/MouseEventManager.h @@ -93,6 +93,7 @@ class CORE_EXPORT MouseEventManager final void DispatchFakeMouseMoveEventSoonInQuad(const FloatQuad&); void SetLastKnownMousePosition(const WebMouseEvent&); + void SetLastMousePositionAsUnknown(); bool HandleDragDropIfPossible(const GestureEventWithHitTestResults&); |