Jason Edmeades : user32: MDI tile and cascade should not resize non-resizable windows.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jul 24 07:06:09 CDT 2007


Module: wine
Branch: master
Commit: ca710edc345b3b03d2a534fe40f651b576741b15
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ca710edc345b3b03d2a534fe40f651b576741b15

Author: Jason Edmeades <jason.edmeades at googlemail.com>
Date:   Mon Jul 23 22:59:46 2007 +0100

user32: MDI tile and cascade should not resize non-resizable windows.

---

 dlls/user32/mdi.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index a269292..1fc2fbd 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -726,13 +726,17 @@ static LONG MDICascade( HWND client, MDICLIENTINFO *ci )
         /* walk the list (backwards) and move windows */
         for (i = total - 1; i >= 0; i--)
         {
+            LONG style;
+            LONG posOptions = SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER;
 
             MDI_CalcDefaultChildPos(client, n++, pos, delta, NULL);
             TRACE("move %p to (%d,%d) size [%d,%d]\n",
                   win_array[i], pos[0].x, pos[0].y, pos[1].x, pos[1].y);
+            style = GetWindowLongW(win_array[i], GWL_STYLE);
 
+            if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE;
             SetWindowPos( win_array[i], 0, pos[0].x, pos[0].y, pos[1].x, pos[1].y,
-                          SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER);
+                           posOptions);
         }
     }
     HeapFree( GetProcessHeap(), 0, win_array );
@@ -812,8 +816,11 @@ static void MDITile( HWND client, MDICLIENTINFO *ci, WPARAM wParam )
             y = 0;
             for (r = 1; r <= rows && *pWnd; r++, i++)
             {
-                SetWindowPos(*pWnd, 0, x, y, xsize, ysize,
-                             SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER);
+                LONG posOptions = SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER;
+                LONG style = GetWindowLongW(win_array[i], GWL_STYLE);
+                if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE;
+
+                SetWindowPos(*pWnd, 0, x, y, xsize, ysize, posOptions);
                 y += ysize;
                 pWnd++;
             }




More information about the wine-cvs mailing list