user32: Do not block sending/posting WM_NOTIFY messages.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9b09472d4f
commit
b4ac51effa
|
@ -310,8 +310,7 @@ static const unsigned int message_pointer_flags[] =
|
|||
SET(WM_GETMINMAXINFO) | SET(WM_DRAWITEM) | SET(WM_MEASUREITEM) | SET(WM_DELETEITEM) |
|
||||
SET(WM_COMPAREITEM),
|
||||
/* 0x40 - 0x5f */
|
||||
SET(WM_WINDOWPOSCHANGING) | SET(WM_WINDOWPOSCHANGED) | SET(WM_COPYDATA) |
|
||||
SET(WM_NOTIFY) | SET(WM_HELP),
|
||||
SET(WM_WINDOWPOSCHANGING) | SET(WM_WINDOWPOSCHANGED) | SET(WM_COPYDATA) | SET(WM_HELP),
|
||||
/* 0x60 - 0x7f */
|
||||
SET(WM_STYLECHANGING) | SET(WM_STYLECHANGED),
|
||||
/* 0x80 - 0x9f */
|
||||
|
|
|
@ -11188,6 +11188,70 @@ static void test_quit_message(void)
|
|||
ok_sequence(WmStopQuitSeq, "WmStopQuitSeq", FALSE);
|
||||
}
|
||||
|
||||
static const struct message WmNotifySeq[] = {
|
||||
{ WM_NOTIFY, sent|wparam|lparam, 0x1234, 0xdeadbeef },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static void test_notify_message(void)
|
||||
{
|
||||
HWND hwnd;
|
||||
BOOL ret;
|
||||
MSG msg;
|
||||
|
||||
hwnd = CreateWindowExA(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, 0, NULL, NULL, 0);
|
||||
ok(hwnd != 0, "Failed to create window\n");
|
||||
flush_events();
|
||||
flush_sequence();
|
||||
|
||||
ret = SendNotifyMessageA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "SendNotifyMessageA failed with error %u\n", GetLastError());
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = SendNotifyMessageW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "SendNotifyMessageW failed with error %u\n", GetLastError());
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = SendMessageCallbackA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef, NULL, 0);
|
||||
ok(ret == TRUE, "SendMessageCallbackA failed with error %u\n", GetLastError());
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = SendMessageCallbackW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef, NULL, 0);
|
||||
ok(ret == TRUE, "SendMessageCallbackW failed with error %u\n", GetLastError());
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = PostMessageA(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "PostMessageA failed with error %u\n", GetLastError());
|
||||
flush_events();
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = PostMessageW(hwnd, WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "PostMessageW failed with error %u\n", GetLastError());
|
||||
flush_events();
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = PostThreadMessageA(GetCurrentThreadId(), WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "PostThreadMessageA failed with error %u\n", GetLastError());
|
||||
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
|
||||
{
|
||||
msg.hwnd = hwnd;
|
||||
DispatchMessageA(&msg);
|
||||
}
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
ret = PostThreadMessageW(GetCurrentThreadId(), WM_NOTIFY, 0x1234, 0xdeadbeef);
|
||||
ok(ret == TRUE, "PostThreadMessageW failed with error %u\n", GetLastError());
|
||||
while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE))
|
||||
{
|
||||
msg.hwnd = hwnd;
|
||||
DispatchMessageA(&msg);
|
||||
}
|
||||
ok_sequence(WmNotifySeq, "WmNotifySeq", FALSE);
|
||||
|
||||
DestroyWindow(hwnd);
|
||||
}
|
||||
|
||||
static const struct message WmMouseHoverSeq[] = {
|
||||
{ WM_MOUSEACTIVATE, sent|optional }, /* we can get those when moving the mouse in focus-follow-mouse mode under X11 */
|
||||
{ WM_MOUSEACTIVATE, sent|optional },
|
||||
|
@ -15793,6 +15857,7 @@ START_TEST(msg)
|
|||
test_SendMessageTimeout();
|
||||
test_edit_messages();
|
||||
test_quit_message();
|
||||
test_notify_message();
|
||||
test_SetActiveWindow();
|
||||
|
||||
if (!pTrackMouseEvent)
|
||||
|
|
Loading…
Reference in New Issue