diff options
author | Nathan Collins <nathan.collins@kdab.com> | 2018-03-21 10:14:09 +0000 |
---|---|---|
committer | Nathan Collins <nathan.collins@kdab.com> | 2018-03-28 14:24:51 +0000 |
commit | 282167b99eaa8f09d914f1b01b3af59b4e88f3e0 (patch) | |
tree | f6b3b91441df01268d9f405d043b34ecccb0163f | |
parent | 469b014deb8285cc2aacfb816897f40dcf754c9b (diff) |
macOS: Handle NaN mouse event positions
When performing gestures such as Exposé or Mission Control with the
mouse button down, the position of the mouse release event is
returned with NaN values. This causes
QGuiApplicationPrivate::processMouseEvent to be called recursively
and ultimately crash.
Task-number: QTBUG-67194
Change-Id: If1536bc4dc2075c498cdd6c5afe57c86bdaac13b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 992f673782ac7b8edea0dc7b4498eb7f970b4ba8)
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview.mm | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 78287b482c..968018c894 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -638,8 +638,12 @@ static bool _q_dontOverrideCtrlLMB = false; NSPoint screenPoint; if (theEvent) { NSPoint windowPoint = [theEvent locationInWindow]; - NSRect screenRect = [[theEvent window] convertRectToScreen:NSMakeRect(windowPoint.x, windowPoint.y, 1, 1)]; - screenPoint = screenRect.origin; + if (qIsNaN(windowPoint.x) || qIsNaN(windowPoint.y)) { + screenPoint = [NSEvent mouseLocation]; + } else { + NSRect screenRect = [[theEvent window] convertRectToScreen:NSMakeRect(windowPoint.x, windowPoint.y, 1, 1)]; + screenPoint = screenRect.origin; + } } else { screenPoint = [NSEvent mouseLocation]; } |