Skip to content
Snippets Groups Projects
Commit b285c570 authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard
Browse files

winemac: Defer minimizing hidden windows until they are shown.

Minimizing invisible windows causes weird phantoms to appear in
Exposé, the Window menu, and the Dock.
parent 841f158d
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@ @interface WineWindow : NSPanel <NSWindowDelegate>
BOOL disabled;
BOOL noActivate;
BOOL floating;
BOOL pendingMinimize;
WineWindow* latentParentWindow;
void* hwnd;
......
......@@ -636,10 +636,16 @@ - (void) setMacDrvState:(const struct macdrv_window_state*)state
}
[self setCollectionBehavior:behavior];
pendingMinimize = FALSE;
if (state->minimized && ![self isMiniaturized])
{
ignore_windowMiniaturize = TRUE;
[self miniaturize:nil];
if ([self isVisible])
{
ignore_windowMiniaturize = TRUE;
[self miniaturize:nil];
}
else
pendingMinimize = TRUE;
}
else if (!state->minimized && [self isMiniaturized])
{
......@@ -754,6 +760,13 @@ - (BOOL) orderBelow:(WineWindow*)prev orAbove:(WineWindow*)next
if (needAdjustWindowLevels)
[controller adjustWindowLevels];
if (pendingMinimize)
{
ignore_windowMiniaturize = TRUE;
[self miniaturize:nil];
pendingMinimize = FALSE;
}
NSEnableScreenUpdates();
/* Cocoa may adjust the frame when the window is ordered onto the screen.
......@@ -770,6 +783,8 @@ - (BOOL) orderBelow:(WineWindow*)prev orAbove:(WineWindow*)next
- (void) doOrderOut
{
if ([self isMiniaturized])
pendingMinimize = TRUE;
self.latentParentWindow = [self parentWindow];
[latentParentWindow removeChildWindow:self];
[self orderOut:nil];
......@@ -948,6 +963,13 @@ - (void) makeFocused:(BOOL)activate
[self orderFront:nil];
[controller adjustWindowLevels];
if (pendingMinimize)
{
ignore_windowMiniaturize = TRUE;
[self miniaturize:nil];
pendingMinimize = FALSE;
}
NSEnableScreenUpdates();
causing_becomeKeyWindow = TRUE;
......@@ -1057,6 +1079,13 @@ - (void) makeKeyAndOrderFront:(id)sender
[self setLevel:[front level]];
[self orderFront:nil];
[controller adjustWindowLevels];
if (pendingMinimize)
{
ignore_windowMiniaturize = TRUE;
[self miniaturize:nil];
pendingMinimize = FALSE;
}
}
- (void) sendEvent:(NSEvent*)event
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment