Module: wine Branch: stable Commit: 1d8ae9fff45593ed32966b17ba889c7840cab103 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1d8ae9fff45593ed32966b17ba...
Author: Fabian Maurer dark.shadow4@web.de Date: Mon Feb 13 16:58:27 2017 +0100
user32/tests: Add tests for windows when first shown if they have children.
Signed-off-by: Fabian Maurer dark.shadow4@web.de Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 372e3e223a2954673df1e6f3b1b3bcad51fc3adf) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/user32/tests/msg.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 7dc3d0f..96bc594 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -1120,6 +1120,17 @@ static const struct message WmFirstDrawSetWindowPosSeq5[] = { { WM_WINDOWPOSCHANGED, sent }, { 0 } }; +static const struct message WmFirstDrawChildSeq1[] = { + { 0 } +}; +static const struct message WmFirstDrawChildSeq2[] = { + { WM_NCPAINT, sent|wparam, 1 }, + { WM_ERASEBKGND, sent }, + /* ocasionally received on test machines */ + { WM_NCPAINT, sent|optional }, + { WM_ERASEBKGND, sent|optional }, + { 0 } +}; /* CreateWindow (for child window, not initially visible) */ static const struct message WmCreateChildSeq[] = { { HCBT_CREATEWND, hook }, @@ -5103,6 +5114,38 @@ static void test_messages(void) test_msg_setpos(WmFirstDrawSetWindowPosSeq2, SWP_SHOWWINDOW | SWP_NOREDRAW | SWP_NOSIZE, FALSE); test_msg_setpos(WmFirstDrawSetWindowPosSeq2, SWP_SHOWWINDOW | SWP_NOREDRAW | SWP_NOZORDER, FALSE);
+ /* Test SetWindowPos with child windows */ + flush_events(); + hparent = CreateWindowExA(0, "TestParentClass", "Test parent", WS_OVERLAPPEDWINDOW | WS_VISIBLE, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok (hparent != 0, "Failed to create parent window\n"); + + hchild = CreateWindowExA(0, "TestWindowClass", "Test child", WS_CHILD | WS_VISIBLE, + 0, 0, 10, 10, hparent, 0, 0, NULL); + ok (hchild != 0, "Failed to create child window\n"); + flush_sequence(); + SetWindowPos(hparent, NULL, 0, 0, 100, 100, SWP_SHOWWINDOW); + ok_sequence(WmFirstDrawChildSeq1, /* Expect no messages for the child */ + "SetWindowPos:show_popup_first_show_window_child1", FALSE); + DestroyWindow(hchild); + DestroyWindow(hparent); + + flush_events(); + hparent = CreateWindowExA(0, "TestParentClass", "Test parent", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok (hparent != 0, "Failed to create parent window\n"); + + hchild = CreateWindowExA(0, "TestWindowClass", "Test child", WS_CHILD | WS_VISIBLE, + 0, 0, 10, 10, hparent, 0, 0, NULL); + ok (hchild != 0, "Failed to create child window\n"); + flush_sequence(); + SetWindowPos(hparent, NULL, 0, 0, 100, 100, SWP_SHOWWINDOW); + ok_sequence(WmFirstDrawChildSeq2, /* Expect child to be redrawn */ + "SetWindowPos:show_popup_first_show_window_child2", TRUE); + DestroyWindow(hchild); + DestroyWindow(hparent); + + /* Test child windows */
hparent = CreateWindowExA(0, "TestParentClass", "Test parent", WS_OVERLAPPEDWINDOW | WS_VISIBLE,