[PATCH resend 6/6] user32/tests: Test changing activation from within WM_ACTIVATE's WA_INACTIVE message
Gabriel Ivăncescu
gabrielopcode at gmail.com
Wed Mar 13 08:13:00 CDT 2019
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
dlls/user32/tests/win.c | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index e839d86..209161e 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -910,6 +910,17 @@ static LRESULT WINAPI no_deactivation_procA(HWND hwnd, UINT msg, WPARAM wparam,
return DefWindowProcA(hwnd, msg, wparam, lparam);
}
+static LRESULT WINAPI change_activation_from_wa_inactive_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ switch (msg)
+ {
+ case WM_ACTIVATE:
+ if (LOWORD(wparam) == WA_INACTIVE)
+ SetActiveWindow((HWND)GetWindowLongPtrA(hwnd, GWLP_USERDATA));
+ }
+ return DefWindowProcA(hwnd, msg, wparam, lparam);
+}
+
static const WCHAR mainclassW[] = {'M','a','i','n','W','i','n','d','o','w','C','l','a','s','s','W',0};
static BOOL RegisterWindowClasses(void)
@@ -3137,7 +3148,7 @@ todo_wine
static void test_SetActiveWindow(HWND hwnd)
{
- HWND hwnd2, ret;
+ HWND hwnd2, hwnd3, ret;
flush_events( TRUE );
ShowWindow(hwnd, SW_HIDE);
@@ -3228,6 +3239,24 @@ static void test_SetActiveWindow(HWND hwnd)
SetActiveWindow(hwnd);
check_wnd_state(hwnd2, hwnd2, hwnd2, 0);
DestroyWindow(hwnd2);
+
+ /* changing the activated window from within WM_ACTIVATE's WA_INACTIVE should work */
+ hwnd2 = CreateWindowExA(0, "MainWindowClass", "No Deactivation window", WS_OVERLAPPED | WS_VISIBLE,
+ 10, 10, 50, 50, hwnd, 0, GetModuleHandleA(NULL), NULL);
+ ok(hwnd2 != NULL, "failed to create window: 0x%08x\n", GetLastError());
+ hwnd3 = CreateWindowExA(0, "MainWindowClass", "No Deactivation window", WS_OVERLAPPED | WS_VISIBLE,
+ 70, 70, 50, 50, hwnd, 0, GetModuleHandleA(NULL), NULL);
+ ok(hwnd3 != NULL, "failed to create window: 0x%08x\n", GetLastError());
+
+ SetActiveWindow(hwnd2);
+ check_wnd_state(hwnd2, hwnd2, hwnd2, 0);
+ SetWindowLongPtrA(hwnd2, GWLP_USERDATA, (LONG_PTR)hwnd3);
+ SetWindowLongPtrA(hwnd2, GWLP_WNDPROC, (LONG_PTR)change_activation_from_wa_inactive_procA);
+ SetActiveWindow(hwnd);
+ check_wnd_state(hwnd3, hwnd3, hwnd3, 0);
+
+ DestroyWindow(hwnd2);
+ DestroyWindow(hwnd3);
}
struct create_window_thread_params
--
2.20.1
More information about the wine-devel
mailing list