From: Gabriel Ivăncescu Subject: [PATCH 5/6] user32/focus: Don't continue activation if the window proc changed it when deactivated Message-Id: <13d615cca31691d496d598686f4f36d359fe4756.1548678703.git.gabrielopcode@gmail.com> Date: Mon, 28 Jan 2019 14:34:18 +0200 In-Reply-To: <9d7e2092f2b9e40d7e85c7e884d4f9b0cfa8952d.1548678703.git.gabrielopcode@gmail.com> References: <9d7e2092f2b9e40d7e85c7e884d4f9b0cfa8952d.1548678703.git.gabrielopcode@gmail.com> Signed-off-by: Gabriel Ivăncescu --- See tests in next patch; changing the activation from within the WA_INACTIVE message is kept by Windows. dlls/user32/focus.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c index 834ceb1..1fac45d 100644 --- a/dlls/user32/focus.c +++ b/dlls/user32/focus.c @@ -104,6 +104,9 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) if (!SendMessageW( previous, WM_NCACTIVATE, FALSE, (LPARAM)hwnd )) goto clear_flags; SendMessageW( previous, WM_ACTIVATE, MAKEWPARAM( WA_INACTIVE, IsIconic(previous) ), (LPARAM)hwnd ); + + /* Give up if the activation was changed */ + if (previous != GetActiveWindow()) goto clear_flags; } } -- 2.19.1