Module: wine Branch: master Commit: 38f7a4d518c66537d0919ac07904332cb8f4e208 URL: http://source.winehq.org/git/wine.git/?a=commit;h=38f7a4d518c66537d0919ac079...
Author: Ken Thomases ken@codeweavers.com Date: Sun Feb 24 22:53:29 2013 -0600
winemac: Implement GetCursorPos().
---
dlls/winemac.drv/cocoa_app.m | 17 +++++++++++++++++ dlls/winemac.drv/macdrv_cocoa.h | 1 + dlls/winemac.drv/mouse.c | 19 +++++++++++++++++++ dlls/winemac.drv/winemac.drv.spec | 1 + 4 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 44fa282..d22596e 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -815,3 +815,20 @@ void macdrv_set_cursor(CFStringRef name, CFArrayRef frames) } } } + +/*********************************************************************** + * macdrv_get_cursor_position + * + * Obtains the current cursor position. Returns zero on failure, + * non-zero on success. + */ +int macdrv_get_cursor_position(CGPoint *pos) +{ + OnMainThread(^{ + NSPoint location = [NSEvent mouseLocation]; + location = [NSApp flippedMouseLocation:location]; + *pos = NSPointToCGPoint(location); + }); + + return TRUE; +} diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index 269dbea..c3ad6ba 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -120,6 +120,7 @@ extern void macdrv_beep(void) DECLSPEC_HIDDEN;
/* cursor */ extern void macdrv_set_cursor(CFStringRef name, CFArrayRef frames) DECLSPEC_HIDDEN; +extern int macdrv_get_cursor_position(CGPoint *pos) DECLSPEC_HIDDEN;
/* display */ diff --git a/dlls/winemac.drv/mouse.c b/dlls/winemac.drv/mouse.c index 8e16388..b0288f6 100644 --- a/dlls/winemac.drv/mouse.c +++ b/dlls/winemac.drv/mouse.c @@ -736,6 +736,25 @@ void CDECL macdrv_DestroyCursorIcon(HCURSOR cursor)
/*********************************************************************** + * GetCursorPos (MACDRV.@) + */ +BOOL CDECL macdrv_GetCursorPos(LPPOINT pos) +{ + CGPoint pt; + BOOL ret; + + ret = macdrv_get_cursor_position(&pt); + if (ret) + { + TRACE("pointer at (%g,%g) server pos %d,%d\n", pt.x, pt.y, pos->x, pos->y); + pos->x = pt.x; + pos->y = pt.y; + } + return ret; +} + + +/*********************************************************************** * SetCursor (MACDRV.@) */ void CDECL macdrv_SetCursor(HCURSOR cursor) diff --git a/dlls/winemac.drv/winemac.drv.spec b/dlls/winemac.drv/winemac.drv.spec index 6fd4bef..99746b4 100644 --- a/dlls/winemac.drv/winemac.drv.spec +++ b/dlls/winemac.drv/winemac.drv.spec @@ -13,6 +13,7 @@ @ cdecl DestroyWindow(long) macdrv_DestroyWindow @ cdecl EnumDisplayMonitors(long ptr ptr long) macdrv_EnumDisplayMonitors @ cdecl EnumDisplaySettingsEx(ptr long ptr long) macdrv_EnumDisplaySettingsEx +@ cdecl GetCursorPos(ptr) macdrv_GetCursorPos @ cdecl GetKeyboardLayout(long) macdrv_GetKeyboardLayout @ cdecl GetKeyboardLayoutName(ptr) macdrv_GetKeyboardLayoutName @ cdecl GetKeyNameText(long ptr long) macdrv_GetKeyNameText