Merge pull request #10099 from bruvzg/3.0-fix-osx-warp_mouse_pos

Fix warp_mouse_pos on macOS
This commit is contained in:
Rémi Verschelde 2017-08-07 14:47:54 +02:00 committed by GitHub
commit ae88eb5b50
1 changed files with 3 additions and 8 deletions

View File

@ -1081,18 +1081,13 @@ void OS_OSX::warp_mouse_pos(const Point2 &p_to) {
mouse_y = p_to.y;
} else { //set OS position
/* this code has not been tested, please be a kind soul and fix it if it fails! */
//local point in window coords
NSPoint localPoint = { p_to.x, p_to.y };
NSPoint pointInWindow = [window_view convertPoint:localPoint toView:nil];
NSRect pointInWindowRect;
pointInWindowRect.origin = pointInWindow;
const NSRect contentRect = [window_view frame];
NSRect pointInWindowRect = NSMakeRect(p_to.x / display_scale, contentRect.size.height - (p_to.y / display_scale) - 1, 0, 0);
NSPoint pointOnScreen = [[window_view window] convertRectToScreen:pointInWindowRect].origin;
//point in scren coords
CGPoint lMouseWarpPos = { pointOnScreen.x, pointOnScreen.y };
CGPoint lMouseWarpPos = { pointOnScreen.x, CGDisplayBounds(CGMainDisplayID()).size.height - pointOnScreen.y };
//do the warping
CGEventSourceRef lEventRef = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);