From b31f0f24ffd62062608ac0fa5bd7896fa8c36b46 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 3 Aug 2009 08:06:53 +0200 Subject: [PATCH] user32: Send 0 as LPARAM for SIZE_MINIMIZED WM_SIZE messages. --- dlls/user32/defwnd.c | 13 +++++++++---- dlls/user32/tests/msg.c | 22 +++++++++++----------- dlls/user32/winpos.c | 10 +++++++--- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c index 19d6ab22656..39e27b37a9a 100644 --- a/dlls/user32/defwnd.c +++ b/dlls/user32/defwnd.c @@ -66,11 +66,16 @@ static void DEFWND_HandleWindowPosChanged( HWND hwnd, const WINDOWPOS *winpos ) if (!(winpos->flags & SWP_NOCLIENTSIZE) || (winpos->flags & SWP_STATECHANGED)) { - WPARAM wp = SIZE_RESTORED; - if (IsZoomed(hwnd)) wp = SIZE_MAXIMIZED; - else if (IsIconic(hwnd)) wp = SIZE_MINIMIZED; + if (IsIconic( hwnd )) + { + SendMessageW( hwnd, WM_SIZE, SIZE_MINIMIZED, 0 ); + } + else + { + WPARAM wp = IsZoomed( hwnd ) ? SIZE_MAXIMIZED : SIZE_RESTORED; - SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) ); + SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) ); + } } } diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index e2789cee03f..30acaa25f09 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -581,7 +581,7 @@ static const struct message WmShowMinOverlappedSeq[] = { { WM_GETTEXT, sent|defwinproc|optional }, { WM_WINDOWPOSCHANGED, sent }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_SIZE, sent|defwinproc|wparam|lparam, SIZE_MINIMIZED, 0 }, { WM_NCCALCSIZE, sent|optional }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, @@ -1004,7 +1004,7 @@ static const struct message WmShowChildInvisibleParentSeq_1[] = { { WM_CHILDACTIVATE, sent|optional }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_NOREDRAW|SWP_NOCOPYBITS|SWP_STATECHANGED, 0, SWP_NOACTIVATE }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_SIZE, sent|defwinproc|wparam|lparam, SIZE_MINIMIZED, 0 }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, { EVENT_SYSTEM_MINIMIZESTART, winevent_hook|wparam|lparam, 0, 0 }, /* FIXME: Wine creates an icon/title window while Windows doesn't */ @@ -1044,7 +1044,7 @@ static const struct message WmShowChildInvisibleParentSeq_3[] = { { WM_CHILDACTIVATE, sent }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_NOREDRAW|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_SIZE, sent|defwinproc|wparam|lparam, SIZE_MINIMIZED, 0 }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, { EVENT_SYSTEM_MINIMIZESTART, winevent_hook|wparam|lparam, 0, 0 }, /* FIXME: Wine creates an icon/title window while Windows doesn't */ @@ -1065,7 +1065,7 @@ static const struct message WmShowChildInvisibleParentSeq_4[] = { { EVENT_OBJECT_SHOW, winevent_hook|wparam|lparam, 0, 0 }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOREDRAW|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_SIZE, sent|defwinproc|wparam|lparam, SIZE_MINIMIZED, 0 }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, { EVENT_SYSTEM_MINIMIZESTART, winevent_hook|wparam|lparam, 0, 0 }, /* FIXME: Wine creates an icon/title window while Windows doesn't */ @@ -3186,7 +3186,7 @@ static const struct message WmMinimizeMDIchildVisibleSeq[] = { { WM_NCCALCSIZE, sent|wparam, 1 }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOCOPYBITS|SWP_NOCLIENTSIZE|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_SIZE, sent|defwinproc|wparam|lparam, SIZE_MINIMIZED, 0 }, { WM_CHILDACTIVATE, sent|wparam|lparam|defwinproc, 0, 0 }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, /* MDI child */ { EVENT_SYSTEM_MINIMIZESTART, winevent_hook|wparam|lparam, 0, 0 }, /* MDI child */ @@ -10254,7 +10254,7 @@ static const struct message WmShowMinimized_1[] = { { WM_WINDOWPOSCHANGING, sent|wparam|optional, SWP_NOSIZE|SWP_NOMOVE }, /* win2000 doesn't send it */ { WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|wparam|defwinproc, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmMinimize_1[] = { @@ -10264,7 +10264,7 @@ static const struct message WmMinimize_1[] = { { WM_WINDOWPOSCHANGING, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|wparam|defwinproc, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmMinimize_2[] = { @@ -10273,7 +10273,7 @@ static const struct message WmMinimize_2[] = { { WM_WINDOWPOSCHANGING, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|wparam|defwinproc, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmMinimize_3[] = { @@ -10281,7 +10281,7 @@ static const struct message WmMinimize_3[] = { { WM_WINDOWPOSCHANGING, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_WINDOWPOSCHANGED, sent|wparam, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc }, - { WM_SIZE, sent|wparam|defwinproc, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmShowMinNoActivate[] = { @@ -10289,7 +10289,7 @@ static const struct message WmShowMinNoActivate[] = { { WM_WINDOWPOSCHANGING, sent }, { WM_WINDOWPOSCHANGED, sent }, { WM_MOVE, sent|defwinproc|optional }, - { WM_SIZE, sent|wparam|defwinproc|optional, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc|optional, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmMinMax_1[] = { @@ -10315,7 +10315,7 @@ static const struct message WmMinMax_3[] = { { WM_WINDOWPOSCHANGING, sent|wparam|optional, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_WINDOWPOSCHANGED, sent|wparam|optional, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_STATECHANGED }, { WM_MOVE, sent|defwinproc|optional }, - { WM_SIZE, sent|wparam|defwinproc|optional, SIZE_MINIMIZED }, + { WM_SIZE, sent|wparam|lparam|defwinproc|optional, SIZE_MINIMIZED, 0 }, { 0 } }; static const struct message WmMinMax_4[] = { diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index 7f18da51952..8aeecc20a91 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -1077,14 +1077,18 @@ static BOOL show_window( HWND hwnd, INT cmd ) /* should happen only in CreateWindowEx() */ int wParam = SIZE_RESTORED; RECT client = wndPtr->rectClient; + LPARAM lparam = MAKELONG( client.right - client.left, client.bottom - client.top ); wndPtr->flags &= ~WIN_NEED_SIZE; if (wndPtr->dwStyle & WS_MAXIMIZE) wParam = SIZE_MAXIMIZED; - else if (wndPtr->dwStyle & WS_MINIMIZE) wParam = SIZE_MINIMIZED; + else if (wndPtr->dwStyle & WS_MINIMIZE) + { + wParam = SIZE_MINIMIZED; + lparam = 0; + } WIN_ReleasePtr( wndPtr ); - SendMessageW( hwnd, WM_SIZE, wParam, - MAKELONG( client.right - client.left, client.bottom - client.top )); + SendMessageW( hwnd, WM_SIZE, wParam, lparam ); SendMessageW( hwnd, WM_MOVE, 0, MAKELONG( client.left, client.top )); } else WIN_ReleasePtr( wndPtr ); -- 2.11.4.GIT