From 408c595eb8d5edfa823d2857c7eda903130b222d Mon Sep 17 00:00:00 2001 From: michi_cc Date: Mon, 5 Aug 2013 20:35:49 +0000 Subject: [PATCH] (svn r25658) -Fix [FS#4392]: [OSX] The mouse cursor would sometimes jump near the window borders. (Matthieu) --- src/video/cocoa/wnd_quartz.mm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm index 9914b97c97..4274c2ca40 100644 --- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -514,8 +514,21 @@ CGPoint WindowQuartzSubdriver::PrivateLocalToCG(NSPoint *p) NSPoint WindowQuartzSubdriver::GetMouseLocation(NSEvent *event) { - NSPoint pt = [ event locationInWindow ]; - pt = [ this->cocoaview convertPoint:pt fromView:nil ]; + NSPoint pt; + + if (event.window == nil) { +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([ this->cocoaview respondsToSelector:@selector(convertRectFromScreen:) ]) { + pt = [ this->cocoaview convertPoint:[ [ this->cocoaview window ] convertRectFromScreen:NSMakeRect([ event locationInWindow ].x, [ event locationInWindow ].y, 0, 0) ].origin fromView:nil ]; + } + else +#endif + { + pt = [ this->cocoaview convertPoint:[ [ this->cocoaview window ] convertScreenToBase:[ event locationInWindow ] ] fromView:nil ]; + } + } else { + pt = [ event locationInWindow ]; + } pt.y = this->window_height - pt.y;