Fix [#21689] for coordinate issue (y flipped) when setting mouse cursor position
Mem leak when using BGE fixed too.
This commit is contained in:
@@ -813,6 +813,7 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32
|
|||||||
GHOST_WindowCocoa* window = (GHOST_WindowCocoa*)m_windowManager->getActiveWindow();
|
GHOST_WindowCocoa* window = (GHOST_WindowCocoa*)m_windowManager->getActiveWindow();
|
||||||
if (!window) return GHOST_kFailure;
|
if (!window) return GHOST_kFailure;
|
||||||
|
|
||||||
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
NSScreen *windowScreen = window->getScreen();
|
NSScreen *windowScreen = window->getScreen();
|
||||||
NSRect screenRect = [windowScreen frame];
|
NSRect screenRect = [windowScreen frame];
|
||||||
|
|
||||||
@@ -825,6 +826,7 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32
|
|||||||
|
|
||||||
CGDisplayMoveCursorToPoint((CGDirectDisplayID)[[[windowScreen deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue], CGPointMake(xf, yf));
|
CGDisplayMoveCursorToPoint((CGDirectDisplayID)[[[windowScreen deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue], CGPointMake(xf, yf));
|
||||||
|
|
||||||
|
[pool drain];
|
||||||
return GHOST_kSuccess;
|
return GHOST_kSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1057,7 +1057,9 @@ void WM_cursor_warp(wmWindow *win, int x, int y)
|
|||||||
if (win && win->ghostwin) {
|
if (win && win->ghostwin) {
|
||||||
int oldx=x, oldy=y;
|
int oldx=x, oldy=y;
|
||||||
|
|
||||||
|
#if !defined(__APPLE__) || !defined(GHOST_COCOA)
|
||||||
y= win->sizey -y - 1;
|
y= win->sizey -y - 1;
|
||||||
|
#endif
|
||||||
GHOST_ClientToScreen(win->ghostwin, x, y, &x, &y);
|
GHOST_ClientToScreen(win->ghostwin, x, y, &x, &y);
|
||||||
GHOST_SetCursorPosition(g_system, x, y);
|
GHOST_SetCursorPosition(g_system, x, y);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user