Tim Clem : winemac.drv: Simplify cursor clipping code paths.
Alexandre Julliard
julliard at winehq.org
Wed Oct 20 15:58:42 CDT 2021
Module: wine
Branch: master
Commit: 325cc98d7d3e77faa195e1043e9f6790a783fd1a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=325cc98d7d3e77faa195e1043e9f6790a783fd1a
Author: Tim Clem <tclem at codeweavers.com>
Date: Tue Oct 19 14:21:09 2021 -0700
winemac.drv: Simplify cursor clipping code paths.
Centralizes all clipping behavior into -startClippingCursor: and
-stopClippingCursor.
Signed-off-by: Tim Clem <tclem at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winemac.drv/cocoa_app.m | 52 +++++++++++++-------------------------------
1 file changed, 15 insertions(+), 37 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m
index 2d18da7f99a..80625265161 100644
--- a/dlls/winemac.drv/cocoa_app.m
+++ b/dlls/winemac.drv/cocoa_app.m
@@ -1456,33 +1456,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
return ret;
}
- - (void) activateCursorClipping
- {
- if (cursorClippingEventTap && !CGEventTapIsEnabled(cursorClippingEventTap))
- {
- CGEventTapEnable(cursorClippingEventTap, TRUE);
- [self setCursorPosition:NSPointToCGPoint([self flippedMouseLocation:[NSEvent mouseLocation]])];
- }
- }
-
- - (void) deactivateCursorClipping
- {
- if (cursorClippingEventTap && CGEventTapIsEnabled(cursorClippingEventTap))
- {
- CGEventTapEnable(cursorClippingEventTap, FALSE);
- [warpRecords removeAllObjects];
- lastSetCursorPositionTime = [[NSProcessInfo processInfo] systemUptime];
- }
- }
-
- - (void) updateCursorClippingState
- {
- if (clippingCursor && [NSApp isActive] && ![windowsBeingDragged count])
- [self activateCursorClipping];
- else
- [self deactivateCursorClipping];
- }
-
- (void) updateWindowsForCursorClipping
{
WineWindow* window;
@@ -1510,7 +1483,10 @@ static NSString* WineLocalizedString(unsigned int stringID)
clippingCursor = TRUE;
cursorClipRect = rect;
- [self updateCursorClippingState];
+
+ CGEventTapEnable(cursorClippingEventTap, TRUE);
+ [self setCursorPosition:NSPointToCGPoint([self flippedMouseLocation:[NSEvent mouseLocation]])];
+
[self updateWindowsForCursorClipping];
return TRUE;
@@ -1518,12 +1494,21 @@ static NSString* WineLocalizedString(unsigned int stringID)
- (BOOL) stopClippingCursor
{
- CGError err = CGAssociateMouseAndMouseCursorPosition(true);
+ CGError err;
+
+ if (!clippingCursor)
+ return TRUE;
+
+ err = CGAssociateMouseAndMouseCursorPosition(true);
if (err != kCGErrorSuccess)
return FALSE;
clippingCursor = FALSE;
- [self updateCursorClippingState];
+
+ CGEventTapEnable(cursorClippingEventTap, FALSE);
+ [warpRecords removeAllObjects];
+ lastSetCursorPositionTime = [[NSProcessInfo processInfo] systemUptime];
+
[self updateWindowsForCursorClipping];
return TRUE;
@@ -1554,7 +1539,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
[windowsBeingDragged addObject:window];
else
[windowsBeingDragged removeObject:window];
- [self updateCursorClippingState];
}
- (void) windowWillOrderOut:(WineWindow*)window
@@ -1584,7 +1568,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
[windowsBeingDragged removeObject:window];
eventType = WINDOW_DRAG_END;
}
- [self updateCursorClippingState];
event = macdrv_create_event(eventType, window);
if (eventType == WINDOW_DRAG_BEGIN)
@@ -2161,7 +2144,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
});
}
[windowsBeingDragged removeObject:window];
- [self updateCursorClippingState];
}];
if (useDragNotifications) {
@@ -2305,8 +2287,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
[self setMode:mode forDisplay:[displayID unsignedIntValue]];
}
- [self updateCursorClippingState];
-
[self updateFullscreenWindows];
[self adjustWindowLevels:YES];
@@ -2349,8 +2329,6 @@ static NSString* WineLocalizedString(unsigned int stringID)
macdrv_event* event;
WineEventQueue* queue;
- [self updateCursorClippingState];
-
[self invalidateGotFocusEvents];
event = macdrv_create_event(APP_DEACTIVATED, nil);
More information about the wine-cvs
mailing list