Fix the regression caused by the recent ShowWindow fixes

Dmitry Timoshkov dmitry at codeweavers.com
Fri May 19 04:55:50 CDT 2006


Hello,

Changelog:
    Fix the regression caused by the recent ShowWindow fixes.

--- cvs/hq/wine/dlls/x11drv/winpos.c	2006-05-19 12:06:06.000000000 +0900
+++ wine/dlls/x11drv/winpos.c	2006-05-19 14:58:26.000000000 +0900
@@ -962,14 +962,15 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT c
                 swp |= SWP_NOACTIVATE | SWP_NOZORDER;
 	    break;
 
-	case SW_MINIMIZE:
 	case SW_SHOWMINNOACTIVE:
             swp |= SWP_NOACTIVATE | SWP_NOZORDER;
             /* fall through */
-	case SW_SHOWMINIMIZED:
+        case SW_MINIMIZE:
         case SW_FORCEMINIMIZE: /* FIXME: Does not work if thread is hung. */
-            swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
+            if (style & WS_CHILD) swp |= SWP_NOACTIVATE | SWP_NOZORDER;
             /* fall through */
+	case SW_SHOWMINIMIZED:
+            swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
             swp |= WINPOS_MinMaximize( hwnd, cmd, &newPos );
             if (style & WS_MINIMIZE) return wasVisible;
             state_change = TRUE;
@@ -989,6 +990,7 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT c
 	case SW_SHOW:
             if (wasVisible) return TRUE;
 	    swp |= SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE;
+            if (style & WS_CHILD) swp |= SWP_NOACTIVATE | SWP_NOZORDER;
 	    break;
 
 	case SW_RESTORE:
@@ -1001,10 +1003,10 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT c
 	case SW_SHOWNORMAL:  /* same as SW_NORMAL: */
 	case SW_SHOWDEFAULT: /* FIXME: should have its own handler */
 	    swp |= SWP_SHOWWINDOW;
-
             if (style & (WS_MINIMIZE | WS_MAXIMIZE))
 		 swp |= WINPOS_MinMaximize( hwnd, SW_RESTORE, &newPos );
             else swp |= SWP_NOSIZE | SWP_NOMOVE;
+            if (style & WS_CHILD) swp |= SWP_NOACTIVATE | SWP_NOZORDER;
 	    break;
     }
 
@@ -1023,12 +1025,9 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT c
     }
     else
     {
-        /* ShowWindow won't activate a not being maximized child window */
         if (style & WS_CHILD)
         {
-            if (!state_change)
-                swp |= SWP_NOACTIVATE | SWP_NOZORDER;
-            else
+            if (state_change)
             {
                 /* it appears that Windows always adds an undocumented 0x8000
                  * flag if the state of a window changes.





More information about the wine-patches mailing list