This modified hack fixes both cases, but presumably is going to break unmanaged windows.
-- Troy Rollo - [EMAIL PROTECTED]
diff --git a/dlls/x11drv/window.c b/dlls/x11drv/window.c diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c index 5fdde83..f164b00 100644 --- a/dlls/x11drv/winpos.c +++ b/dlls/x11drv/winpos.c @@ -954,14 +954,18 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT c /* fall through */ case SW_SHOWMINIMIZED: case SW_FORCEMINIMIZE: /* FIXME: Does not work if thread is hung. */ - swp |= SWP_SHOWWINDOW; + if (!wasVisible) + { + X11DRV_ShowWindow(hwnd, SW_SHOW); + return X11DRV_ShowWindow(hwnd, SW_MINIMIZE); + } /* fall through */ case SW_MINIMIZE: swp |= SWP_FRAMECHANGED; if( !(style & WS_MINIMIZE) ) swp |= WINPOS_MinMaximize( hwnd, SW_MINIMIZE, &newPos ); else swp |= SWP_NOSIZE | SWP_NOMOVE; - break; + return TRUE; // break; case SW_SHOWMAXIMIZED: /* same as SW_MAXIMIZE */ swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;