summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Collins <nathan.collins@kdab.com>2018-03-21 10:14:09 +0000
committerNathan Collins <nathan.collins@kdab.com>2018-03-28 14:24:51 +0000
commit282167b99eaa8f09d914f1b01b3af59b4e88f3e0 (patch)
treef6b3b91441df01268d9f405d043b34ecccb0163f
parent469b014deb8285cc2aacfb816897f40dcf754c9b (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.mm8
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];
}