From 1186c36c89c74066d127ca52512c1196b1802ec9 Mon Sep 17 00:00:00 2001 From: Ken Thomases <ken@codeweavers.com> Date: Fri, 4 Oct 2013 00:17:24 -0500 Subject: [PATCH] winemac: Make clicking on the app's dock icon unminimize a window if there are only minimized windows. Cocoa would automatically do this for a normal app. However, the Mac driver makes all of its windows inherit from NSPanel and Cocoa ignores panels for this feature. --- dlls/winemac.drv/cocoa_app.m | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 632a1bbf63c..9d33e7f414a 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -1915,6 +1915,21 @@ - (void) releaseMouseCapture } } + - (void) unminimizeWindowIfNoneVisible + { + if (![self frontWineWindow]) + { + for (WineWindow* window in [NSApp windows]) + { + if ([window isKindOfClass:[WineWindow class]] && [window isMiniaturized]) + { + [window deminiaturize:self]; + break; + } + } + } + } + /* * ---------- NSApplicationDelegate methods ---------- @@ -1935,17 +1950,8 @@ - (void)applicationDidBecomeActive:(NSNotification *)notification [self updateFullscreenWindows]; [self adjustWindowLevels:YES]; - if (beenActive && ![self frontWineWindow]) - { - for (WineWindow* window in [NSApp windows]) - { - if ([window isKindOfClass:[WineWindow class]] && [window isMiniaturized]) - { - [window deminiaturize:self]; - break; - } - } - } + if (beenActive) + [self unminimizeWindowIfNoneVisible]; beenActive = TRUE; // If a Wine process terminates abruptly while it has the display captured @@ -1997,6 +2003,14 @@ - (void)applicationDidResignActive:(NSNotification *)notification [self releaseMouseCapture]; } + - (BOOL) applicationShouldHandleReopen:(NSApplication*)theApplication hasVisibleWindows:(BOOL)flag + { + // Note that "flag" is often wrong. WineWindows are NSPanels and NSPanels + // don't count as "visible windows" for this purpose. + [self unminimizeWindowIfNoneVisible]; + return YES; + } + - (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender { NSApplicationTerminateReply ret = NSTerminateNow; -- GitLab