Hi Jacek,
Jacek Caban <jacek(a)codeweavers.com> wrote:
> + parent = CreateWindowExA(0, "TestParentClass", "Test parent",
> + WS_OVERLAPPEDWINDOW | WS_VISIBLE,
> + 100, 100, 200, 200, 0, 0, 0, NULL);
> + ok (parent != 0, "Failed to create parent window\n");
> +
> + child = CreateWindowExA(0, "TestWindowClass", "Test child",
> + WS_OVERLAPPEDWINDOW | WS_VISIBLE,
> + 100, 100, 200, 200, 0, 0, 0, NULL);
> + ok (child != 0, "Failed to create child window\n");
> +
> + child2 = CreateWindowExA(0, "SimpleWindowClass", "Test child2",
> + WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CHILD,
> + 100, 100, 200, 200, child, 0, 0, NULL);
> + ok (child2 != 0, "Failed to create child window\n");
> +
> + SetParent(child, parent);
> + SetFocus(child);
Is that really required to use SetParent() instead of specifying correct
parent in the CreateWindowEx call?
> + flush_sequence();
> + DialogBoxA( 0, "TEST_DIALOG", child2, TestModalDlgProc2 );
> + ok_sequence(WmModalDialogSeq_2, "ModalDialog2", TRUE);
Is this test supposed to show that actual dialog owner is parent window?
If yes, then this theory is not tested at all.
> + SetForegroundWindow(hdlg);
> +
> + {
> + const struct message WmEndDialogSeq[] = {
> + { WM_ENABLE, sent },
> + { WM_WINDOWPOSCHANGING, sent|wparam, SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE },
> + { HCBT_ACTIVATE, hook|wparam, (WPARAM)hchild },
> + { WM_NCACTIVATE, sent|wparam|lparam, WA_INACTIVE, (LPARAM)hchild },
> + { WM_ACTIVATE, sent|wparam|lparam, WA_INACTIVE, (LPARAM)hchild },
> + /* FIXME: Following two are optional because Wine sends WM_QUERYNEWPALETTE instead of WM_WINDOWPOSCHANGING */
> + { WM_WINDOWPOSCHANGING, sent|wparam|optional, SWP_NOSIZE|SWP_NOMOVE },
> + { WM_QUERYNEWPALETTE, sent|optional },
> + { WM_NCACTIVATE, sent|wparam|lparam, WA_ACTIVE, (LPARAM)hdlg },
> + { WM_GETTEXT, sent|optional|defwinproc },
> + { WM_ACTIVATE, sent|wparam|lparam, WA_ACTIVE, (LPARAM)hdlg },
> + { HCBT_SETFOCUS, hook|wparam, (WPARAM)hchild },
> + { WM_KILLFOCUS, sent|wparam, (WPARAM)hchild },
> + { WM_SETFOCUS, sent|defwinproc|wparam, (WPARAM)hdlg },
> + { 0 }
> + };
> +
> + flush_sequence();
> + EndDialog(hdlg, 0);
> + ok_sequence(WmEndDialogSeq, "EndDialog", FALSE);
> + }
Please don't create fake embedded blocks.
Also it would be really nice to send the tests first so it would be more clear
when a todo_wine is removed with a subsequent patch in order to see whether
the patch is actually related to the previously sent tests.
--
Dmitry.