user32: Change SetFocus behavior on windows with parent and no WS_CHILD flag.

This commit is contained in:
Piotr Caban 2014-03-26 12:54:38 +01:00 committed by Alexandre Julliard
parent b816a8e629
commit 1cf3d8caa4
2 changed files with 20 additions and 0 deletions

View File

@ -277,6 +277,7 @@ HWND WINAPI SetFocus( HWND hwnd )
HWND parent;
LONG style = GetWindowLongW( hwndTop, GWL_STYLE );
if (style & (WS_MINIMIZE | WS_DISABLED)) return 0;
if (!(style & WS_CHILD)) break;
parent = GetAncestor( hwndTop, GA_PARENT );
if (!parent || parent == GetDesktopWindow())
{

View File

@ -3723,6 +3723,25 @@ static void test_SetParent(void)
todo_wine
check_active_state(popup, 0, popup);
SetActiveWindow(parent);
SetFocus(popup);
check_active_state(popup, 0, popup);
EnableWindow(child1, FALSE);
check_active_state(popup, 0, popup);
SetFocus(parent);
check_active_state(parent, 0, parent);
SetFocus(popup);
check_active_state(popup, 0, popup);
EnableWindow(child1, TRUE);
ShowWindow(child1, SW_MINIMIZE);
SetFocus(parent);
check_active_state(parent, 0, parent);
SetFocus(popup);
check_active_state(popup, 0, popup);
ShowWindow(child1, SW_HIDE);
SetActiveWindow(parent);
SetFocus(parent);
check_active_state(parent, 0, parent);