winemac: Defer adjusting window levels while the process is hidden.

While the process is hidden, it can't get a list of its windows which would
be visible were it not hidden.
This commit is contained in:
Ken Thomases 2013-12-31 01:05:05 -06:00 committed by Alexandre Julliard
parent 3cd677958c
commit 6447e8e75c

View file

@ -488,8 +488,8 @@ - (WineWindow*) frontWineWindow
- (void) adjustWindowLevels:(BOOL)active
{
NSArray* windowNumbers = [NSWindow windowNumbersWithOptions:0];
NSMutableArray* wineWindows = [[NSMutableArray alloc] initWithCapacity:[windowNumbers count]];
NSArray* windowNumbers;
NSMutableArray* wineWindows;
NSNumber* windowNumber;
NSUInteger nextFloatingIndex = 0;
__block NSInteger maxLevel = NSIntegerMin;
@ -497,6 +497,11 @@ - (void) adjustWindowLevels:(BOOL)active
__block WineWindow* prev = nil;
WineWindow* window;
if ([NSApp isHidden]) return;
windowNumbers = [NSWindow windowNumbersWithOptions:0];
wineWindows = [[NSMutableArray alloc] initWithCapacity:[windowNumbers count]];
// For the most part, we rely on the window server's ordering of the windows
// to be authoritative. The one exception is if the "floating" property of
// one of the windows has been changed, it may be in the wrong level and thus
@ -2127,6 +2132,11 @@ - (void)applicationDidResignActive:(NSNotification *)notification
[self releaseMouseCapture];
}
- (void) applicationDidUnhide:(NSNotification*)aNotification
{
[self adjustWindowLevels];
}
- (BOOL) applicationShouldHandleReopen:(NSApplication*)theApplication hasVisibleWindows:(BOOL)flag
{
// Note that "flag" is often wrong. WineWindows are NSPanels and NSPanels