From fb99124f946dc4c11af861218fe78d673cc9b165 Mon Sep 17 00:00:00 2001 From: Vitaliy Margolen Date: Fri, 17 Jun 2005 21:05:16 +0000 Subject: [PATCH] Deactivate active window in ShowWindow(,SW_HIDE). --- dlls/user/tests/msg.c | 1 + dlls/x11drv/winpos.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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: