From e6fb75d262b4d05792907ac24dd7970dbd449e57 Mon Sep 17 00:00:00 2001 From: Anatoly Lyutin Date: Thu, 31 Jul 2008 13:59:02 +0400 Subject: [PATCH] Add !hwnd argument processing in set_active_window() --- dlls/user32/focus.c | 3 +++ dlls/user32/tests/msg.c | 7 ++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c index 3253a87..a131150 100644 --- a/dlls/user32/focus.c +++ b/dlls/user32/focus.c @@ -85,6 +85,9 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) return TRUE; } + if (!hwnd) + hwnd = IsWindowVisible(GetParent(previous)) ? GetParent(previous) : NULL; + /* call CBT hook chain */ cbt.fMouse = mouse; cbt.hWndActive = previous; diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 45087cf..d335c5d 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -10176,11 +10176,8 @@ static void test_SetActiveWindow(void) trace("SetActiveWindow(hwnd), hwnd visible\n"); ret = SetActiveWindow(hwnd); - todo_wine - { - ok( ret == hwnd, "Failed to SetActiveWindow(hwnd), hwnd visible\n"); - } - ok_sequence(SetActiveWindowSeq1, "SetActiveWindow(hwnd), hwnd visible", TRUE); + ok( ret == hwnd, "Failed to SetActiveWindow(hwnd), hwnd visible\n"); + ok_sequence(SetActiveWindowSeq1, "SetActiveWindow(hwnd), hwnd visible", FALSE); flush_sequence(); trace("SetActiveWindow(popup), hwnd visible, popup visible\n"); -- 1.5.4.5.GIT