Module: wine Branch: master Commit: 1186c36c89c74066d127ca52512c1196b1802ec9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1186c36c89c74066d127ca5251...
Author: Ken Thomases ken@codeweavers.com Date: Fri Oct 4 00:17:24 2013 -0500
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 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 632a1bb..9d33e7f 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -1915,6 +1915,21 @@ int macdrv_err_on; } }
+ - (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 @@ int macdrv_err_on; [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 @@ int macdrv_err_on; [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;