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;