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.
This commit is contained in:
Ken Thomases 2013-10-04 00:17:24 -05:00 committed by Alexandre Julliard
parent 63fe00eae7
commit 1186c36c89
1 changed files with 25 additions and 11 deletions

View File

@ -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;