Module: wine Branch: master Commit: 1c4d8938ec4da1c05f6ab3144fdc71014b61c000 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c4d8938ec4da1c05f6ab3144f...
Author: Ken Thomases ken@codeweavers.com Date: Tue May 7 03:00:46 2013 -0500
winemac: Apply cursor clipping to events that were in Cocoa's queue when clipping started.
---
dlls/winemac.drv/cocoa_app.m | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index c518b4e..e8cca28 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -1177,6 +1177,9 @@ int macdrv_err_on; { CGPoint point = CGEventGetLocation([anEvent CGEvent]);
+ if (clippingCursor) + [self clipCursorLocation:&point]; + event = macdrv_create_event(MOUSE_MOVED_ABSOLUTE, targetWindow); event->mouse_moved.x = point.x; event->mouse_moved.y = point.y; @@ -1230,6 +1233,9 @@ int macdrv_err_on; CGPoint pt = CGEventGetLocation([theEvent CGEvent]); BOOL process;
+ if (clippingCursor) + [self clipCursorLocation:&pt]; + if (pressed) { // Test if the click was in the window's content area. @@ -1308,8 +1314,14 @@ int macdrv_err_on; { CGEventRef cgevent = [theEvent CGEvent]; CGPoint pt = CGEventGetLocation(cgevent); - NSPoint nspoint = [self flippedMouseLocation:NSPointFromCGPoint(pt)]; - NSRect contentRect = [window contentRectForFrameRect:[window frame]]; + NSPoint nspoint; + NSRect contentRect; + + if (clippingCursor) + [self clipCursorLocation:&pt]; + + nspoint = [self flippedMouseLocation:NSPointFromCGPoint(pt)]; + contentRect = [window contentRectForFrameRect:[window frame]];
// Only process the event if it was in the window's content area. if (NSPointInRect(nspoint, contentRect))