From cd337174aa0ce501140e7b9791cb20fe15317810 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 30 Jul 2008 16:05:09 +0200 Subject: [PATCH] user32: Return a proper rectangle from WINPOS_MinMaximize. --- dlls/user32/win.c | 3 ++- dlls/user32/winpos.c | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dlls/user32/win.c b/dlls/user32/win.c index 2b7f620d886..7756ab0f064 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -1249,7 +1249,8 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, LPCWSTR className, UINT flags swFlag = WINPOS_MinMaximize( hwnd, swFlag, &newPos ); swFlag |= SWP_FRAMECHANGED; /* Frame always gets changed */ if (!(style & WS_VISIBLE) || (style & WS_CHILD) || GetActiveWindow()) swFlag |= SWP_NOACTIVATE; - SetWindowPos( hwnd, 0, newPos.left, newPos.top, newPos.right, newPos.bottom, swFlag ); + SetWindowPos( hwnd, 0, newPos.left, newPos.top, newPos.right - newPos.left, + newPos.bottom - newPos.top, swFlag ); } /* Notify the parent window only */ diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index a05b5f756d8..fed65e9bb5e 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -905,7 +905,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect ) if (!(old_style & WS_MINIMIZE)) swpFlags |= SWP_STATECHANGED; SetRect( rect, wpl.ptMinPosition.x, wpl.ptMinPosition.y, - GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON) ); + wpl.ptMinPosition.x + GetSystemMetrics(SM_CXICON), + wpl.ptMinPosition.y + GetSystemMetrics(SM_CYICON) ); swpFlags |= SWP_NOCOPYBITS; break; @@ -919,7 +920,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect ) if (old_style & WS_MINIMIZE) WINPOS_ShowIconTitle( hwnd, FALSE ); if (!(old_style & WS_MAXIMIZE)) swpFlags |= SWP_STATECHANGED; - SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, size.x, size.y ); + SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, + wpl.ptMaxPosition.x + size.x, wpl.ptMaxPosition.y + size.y ); break; case SW_SHOWNOACTIVATE: @@ -941,7 +943,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect ) WINPOS_GetMinMaxInfo( hwnd, &size, &wpl.ptMaxPosition, NULL, NULL); WIN_SetStyle( hwnd, WS_MAXIMIZE, 0 ); swpFlags |= SWP_STATECHANGED; - SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, size.x, size.y ); + SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, + wpl.ptMaxPosition.x + size.x, wpl.ptMaxPosition.y + size.y ); break; } } @@ -952,9 +955,6 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect ) /* Restore to normal position */ *rect = wpl.rcNormalPosition; - rect->right -= rect->left; - rect->bottom -= rect->top; - break; } @@ -1055,7 +1055,7 @@ static BOOL show_window( HWND hwnd, INT cmd ) } else SetWindowPos( hwnd, HWND_TOP, newPos.left, newPos.top, - newPos.right, newPos.bottom, LOWORD(swp) ); + newPos.right - newPos.left, newPos.bottom - newPos.top, swp ); if (cmd == SW_HIDE) {