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;
