Module: wine Branch: master Commit: 6e32d18f9fa637ade98ef66f7ab7cd881a90c8e8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6e32d18f9fa637ade98ef66f7a...
Author: Qian Hong qhong@codeweavers.com Date: Sat Oct 12 18:53:28 2013 +0800
user32/tests: Try harder to set foreground window.
---
dlls/user32/tests/winstation.c | 33 +++++++++++++++++++++++++++++---- 1 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/tests/winstation.c b/dlls/user32/tests/winstation.c index d2238dd..9525902 100644 --- a/dlls/user32/tests/winstation.c +++ b/dlls/user32/tests/winstation.c @@ -758,6 +758,32 @@ static DWORD WINAPI create_window(LPVOID param) return 0; }
+static DWORD set_foreground(HWND hwnd) +{ + HWND hwnd_fore; + DWORD set_id, fore_id, ret; + char win_text[1024]; + + hwnd_fore = GetForegroundWindow(); + GetWindowText(hwnd_fore, win_text, 1024); + set_id = GetWindowThreadProcessId(hwnd, NULL); + fore_id = GetWindowThreadProcessId(hwnd_fore, NULL); + trace(""%s" %p %08x hwnd %p %08x\n", win_text, hwnd_fore, fore_id, hwnd, set_id); + ret = AttachThreadInput(set_id, fore_id, TRUE); + trace("AttachThreadInput returned %08x\n", ret); + ret = ShowWindow(hwnd, SW_SHOWNORMAL); + trace("ShowWindow returned %08x\n", ret); + ret = SetWindowPos(hwnd, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE); + trace("set topmost returned %08x\n", ret); + ret = SetWindowPos(hwnd, HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE); + trace("set notopmost returned %08x\n", ret); + ret = SetForegroundWindow(hwnd); + trace("SetForegroundWindow returned %08x\n", ret); + Sleep(250); + AttachThreadInput(set_id, fore_id, FALSE); + return ret; +} + static void test_foregroundwindow(void) { HWND hwnd, hwnd_test, partners[2], hwnds[2]; @@ -824,12 +850,11 @@ static void test_foregroundwindow(void) ok(ret, "set thread desktop failed!\n"); ret = SwitchDesktop(hdesks[input_desk_id]); ok(ret, "switch desktop failed!\n"); - SetForegroundWindow(partners[0]); - SetForegroundWindow(partners[1]); + set_foreground(partners[0]); + set_foreground(partners[1]); hwnd = GetForegroundWindow(); ok(hwnd != hwnd_test, "unexpected foreground window %p\n", hwnd); - ret = SetForegroundWindow(hwnd_test); - Sleep(250); + ret = set_foreground(hwnd_test); hwnd = GetForegroundWindow(); GetWindowText(hwnd, win_text, 1024); trace("hwnd %p name %s\n", hwnd, win_text);