summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2018-01-19 16:55:12 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2018-01-22 07:23:26 +0000
commit8311adf4675e12a8306e2f0b94d822df7e192660 (patch)
treefe1361899c52b54cee51f22167deccf7d5abdf60
parentbfc5b64de44631c35094ceebf0f2545b7b1b9640 (diff)
downloadqtwebengine-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>
-rw-r--r--chromium/third_party/WebKit/Source/core/input/EventHandler.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/core/input/MouseEventManager.cpp6
-rw-r--r--chromium/third_party/WebKit/Source/core/input/MouseEventManager.h1
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&);