[PATCH] [Bug 7381] MDI tile and cascade should not resize
non-resizable windows
Jason Edmeades
jason.edmeades at googlemail.com
Mon Jul 23 16:59:46 CDT 2007
Used sample VB pgm to recreate and confirm.
---
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++;
}
--
1.5.0
More information about the wine-patches
mailing list