From: Stefan Dösinger Subject: [PATCH 7/7] user32/tests: Test WM_SYSCOMMAND(SC_MINIMIZE) on an unminimizable window. Message-Id: <1412595782-19231-7-git-send-email-stefan@codeweavers.com> Date: Mon, 6 Oct 2014 13:43:02 +0200 --- dlls/user32/tests/msg.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 3a81ca7..2b9ff28 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -883,6 +883,24 @@ static const struct message WmMinUnminimizablePopupSeq[] = { { WM_GETTEXT, sent|optional }, { 0 } }; +/* WM_SYSCOMMAND(SC_MINIMIZE) for an unminimizable popup window */ +static const struct message WmSCMinUnminimizablePopupSeq[] = { + { WM_SYSCOMMAND, sent|wparam, SC_MINIMIZE }, + { HCBT_SYSCOMMAND, hook }, + { HCBT_MINMAX, hook }, + { HCBT_SETFOCUS, hook|optional }, + { WM_KILLFOCUS, sent|optional|defwinproc }, + { WM_GETTEXT, sent|optional|defwinproc }, + { WM_WINDOWPOSCHANGING, sent|defwinproc }, /* Windows versions disagree about SWP_NOACTIVATE */ + { WM_NCCALCSIZE, sent|wparam|defwinproc, TRUE }, + { WM_NCPAINT, sent|optional|wparam|defwinproc, 1 }, + { WM_GETTEXT, sent|optional|defwinproc }, + { WM_WINDOWPOSCHANGED, sent|defwinproc }, + { WM_MOVE, sent|defwinproc }, + { WM_SIZE, sent|defwinproc|wparam, SIZE_MINIMIZED }, + { WM_GETTEXT, sent|optional|defwinproc }, + { 0 } +}; /* CreateWindow (for a child popup window, not initially visible) */ static const struct message WmCreateChildPopupSeq[] = { { HCBT_CREATEWND, hook }, @@ -4430,6 +4448,25 @@ static void test_showwindow(void) ok_sequence(WmMinUnminimizablePopupSeq, "ShowWindow(SW_MINIMIZE):popup, unminimizable", FALSE); DestroyWindow(hwnd); flush_sequence(); + + /* Test 6: + * 1. Create a visible popup window without minimization decoration. + * 2. Minimize it with WM_SYSCOMMAND(SC_MINIMIZE). + */ + trace("calling CreateWindowExA( WS_VISIBLE ) for popup window\n"); + hwnd = CreateWindowExA(0, "TestWindowClass", "Test popup", WS_POPUP | WS_VISIBLE, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok (hwnd != 0, "Failed to create popup window\n"); + ok(!IsIconic(hwnd), "window should NOT be iconic\n"); + ok_sequence(WmCreatePopupSeq, "CreateWindow(WS_VISIBLE):popup", FALSE); + + trace("calling SendMessage( WM_SYSCOMMAND, SC_MINIMIZE ) for unminimizable popup window\n"); + SendMessageA( hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 ); + ok(IsIconic(hwnd), "window should be iconic\n"); + ok_sequence(WmSCMinUnminimizablePopupSeq, "SendMessage( WM_SYSCOMMAND, SC_MINIMIZE ):popup, unminimizable", FALSE); + DestroyWindow(hwnd); + flush_sequence(); + } static void test_sys_menu(void) -- 2.0.4