winemac.drv: Fix minimizing windows when Stage Manager is enabled.

This commit is contained in:
Brendan Shanks 2023-10-25 12:51:26 -05:00 committed by Alexandre Julliard
parent e8943a6463
commit 2fcf40a6e1

View file

@ -161,6 +161,21 @@ static inline NSUInteger adjusted_modifiers_for_settings(NSUInteger modifiers)
return new_modifiers;
}
static inline BOOL stage_manager_enabled(void)
{
/* There is no documented way to determine if Stage Manager is enabled,
* but this seems like the best option.
*/
if (floor(NSAppKitVersionNumber) >= 2299 /* NSAppKitVersionNumber13_0 */)
{
NSUserDefaults *defs = [[NSUserDefaults alloc] initWithSuiteName:@"com.apple.WindowManager.plist"];
BOOL enabled = [defs boolForKey:@"GloballyEnabled"];
[defs release];
return enabled;
}
return FALSE;
}
@interface NSWindow (WineAccessPrivateMethods)
- (id) _displayChanged;
@ -2576,6 +2591,16 @@ - (void) sendEvent:(NSEvent*)event
- (void) miniaturize:(id)sender
{
/* When Stage Manager is enabled, miniaturize: just moves the app/window to
* the background rather than minimizing the window.
* Don't start minimizing the window on the Win32 side.
*/
if (stage_manager_enabled())
{
[super miniaturize:sender];
return;
}
macdrv_event* event = macdrv_create_event(WINDOW_MINIMIZE_REQUESTED, self);
[queue postEvent:event];
macdrv_release_event(event);