From 5998eb7c80eece44e0c3a0dd9af751a9ce2a21cc Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 26 May 2011 11:31:56 -0500 Subject: [PATCH 8/9] user32: Test that QS_HOTKEY is properly set and cleared. --- dlls/user32/tests/msg.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index ee1637d..2d903f0 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -7717,6 +7717,7 @@ static LRESULT WINAPI HotkeyMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam static LONG defwndproc_counter = 0; LRESULT ret; struct recvd_message msg; + DWORD queue_status; if (ignore_message( message )) return 0; @@ -7738,7 +7739,18 @@ static LRESULT WINAPI HotkeyMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam defwndproc_counter--; if (message == WM_APP) + { + queue_status = GetQueueStatus(QS_HOTKEY); + ok((queue_status & (QS_HOTKEY << 16)) == QS_HOTKEY << 16, "expected QS_HOTKEY << 16 set, got %x\n", queue_status); + queue_status = GetQueueStatus(QS_POSTMESSAGE); + ok((queue_status & (QS_POSTMESSAGE << 16)) == QS_POSTMESSAGE << 16, "expected QS_POSTMESSAGE << 16 set, got %x\n", queue_status); PostMessageA(hwnd, WM_APP+1, 0, 0); + } + else if (message == WM_APP+1) + { + queue_status = GetQueueStatus(QS_HOTKEY); + ok((queue_status & (QS_HOTKEY << 16)) == 0, "expected QS_HOTKEY << 16 cleared, got %x\n", queue_status); + } return ret; } @@ -13151,6 +13163,7 @@ static void test_hotkey(void) HWND test_window, taskbar_window; BOOL ret; MSG msg; + DWORD queue_status; SHORT key_state; SetLastError(0xdeadbeef); @@ -13238,6 +13251,8 @@ static void test_hotkey(void) ok_sequence(WmHotkeyPressLWIN, "window hotkey press LWIN", FALSE); keybd_event(hotkey_letter, 0, 0, 0); + queue_status = GetQueueStatus(QS_HOTKEY); + ok((queue_status & (QS_HOTKEY << 16)) == QS_HOTKEY << 16, "expected QS_HOTKEY << 16 set, got %x\n", queue_status); while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_HOTKEY) @@ -13249,6 +13264,9 @@ static void test_hotkey(void) } ok_sequence(WmHotkeyPress, "window hotkey press", FALSE); + queue_status = GetQueueStatus(QS_HOTKEY); + ok((queue_status & (QS_HOTKEY << 16)) == 0, "expected QS_HOTKEY << 16 cleared, got %x\n", queue_status); + key_state = GetAsyncKeyState(hotkey_letter); ok((key_state & 0x8000) == 0x8000, "unexpected key state %x\n", key_state); @@ -13262,6 +13280,16 @@ static void test_hotkey(void) DispatchMessage(&msg); ok_sequence(WmHotkeyReleaseLWIN, "window hotkey release LWIN", FALSE); + /* normal posted WM_HOTKEY messages set QS_HOTKEY */ + PostMessage(test_window, WM_HOTKEY, 0, 0); + queue_status = GetQueueStatus(QS_HOTKEY); + ok((queue_status & (QS_HOTKEY << 16)) == QS_HOTKEY << 16, "expected QS_HOTKEY << 16 set, got %x\n", queue_status); + queue_status = GetQueueStatus(QS_POSTMESSAGE); + ok((queue_status & (QS_POSTMESSAGE << 16)) == QS_POSTMESSAGE << 16, "expected QS_POSTMESSAGE << 16 set, got %x\n", queue_status); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + DispatchMessage(&msg); + flush_sequence(); + /* Send and process all messages at once */ PostMessage(test_window, WM_APP, 0, 0); keybd_event(VK_LWIN, 0, 0, 0); -- 1.7.1