diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 632a1bbf63ca7df3f407172ba43ce0aadbd6ef57..9d33e7f414a21b6d01ef89378686b5f3426f80ea 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;