diff --git a/dlls/user/tests/msg.c b/dlls/user/tests/msg.c index 2194b11bf0d..86a4d53587c 100644 --- a/dlls/user/tests/msg.c +++ b/dlls/user/tests/msg.c @@ -2939,6 +2939,7 @@ static void test_messages(void) SetWindowPos(hwnd, 0,0,0,0,0, SWP_HIDEWINDOW|SWP_NOSIZE|SWP_NOMOVE); ok_sequence(WmSWP_HideOverlappedSeq, "SetWindowPos:SWP_HIDEWINDOW:overlapped", FALSE); ok(!IsWindowVisible(hwnd), "window should not be visible at this point\n"); + ok(GetActiveWindow() == hwnd, "window should still be active\n"); /* test WM_SETREDRAW on a visible top level window */ ShowWindow(hwnd, SW_SHOW); diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c index 5f2abc5bc6f..2ab95b67b01 100644 --- a/dlls/x11drv/winpos.c +++ b/dlls/x11drv/winpos.c @@ -934,7 +934,9 @@ BOOL X11DRV_ShowWindow( HWND hwnd, INT cmd ) case SW_HIDE: if (!wasVisible) return FALSE; showFlag = FALSE; - swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER; + swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE; + if (hwnd != GetActiveWindow()) + swp |= SWP_NOACTIVATE | SWP_NOZORDER; break; case SW_SHOWMINNOACTIVE: