From dff3a0dd3add9cace709b98a91a8d664dd348bdb Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 20 Sep 2005 10:45:27 +0000 Subject: [PATCH] Restore the pre-r17946 UserGetAncestor behaviour and fix the code calling it. svn path=/trunk/; revision=17947 --- reactos/subsys/win32k/ntuser/focus.c | 2 +- reactos/subsys/win32k/ntuser/window.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/focus.c b/reactos/subsys/win32k/ntuser/focus.c index 4d5a1efdd01..00f88e5aed7 100644 --- a/reactos/subsys/win32k/ntuser/focus.c +++ b/reactos/subsys/win32k/ntuser/focus.c @@ -520,7 +520,7 @@ HWND FASTCALL co_UserSetFocus(PWINDOW_OBJECT Window OPTIONAL) } TopWnd = UserGetAncestor(Window, GA_ROOT); - if (TopWnd->hSelf != UserGetActiveWindow()) + if (TopWnd && TopWnd->hSelf != UserGetActiveWindow()) { // PWINDOW_OBJECT WndTops = UserGetWindowObject(hWndTop); UserRefObjectCo(TopWnd); diff --git a/reactos/subsys/win32k/ntuser/window.c b/reactos/subsys/win32k/ntuser/window.c index ced4dcb2275..dffa1e75135 100644 --- a/reactos/subsys/win32k/ntuser/window.c +++ b/reactos/subsys/win32k/ntuser/window.c @@ -1374,9 +1374,9 @@ co_IntCreateWindowEx(DWORD dwExStyle, else { //temp hack - PWINDOW_OBJECT Par = UserGetWindowObject(hWndParent); - if (Par) - OwnerWindowHandle = UserGetAncestor(Par, GA_ROOT)->hSelf; + PWINDOW_OBJECT Par = UserGetWindowObject(hWndParent), Root; + if (Par && (Root = UserGetAncestor(Par, GA_ROOT))) + OwnerWindowHandle = Root->hSelf; } } else if ((dwStyle & (WS_CHILD | WS_POPUP)) == WS_CHILD) @@ -2543,6 +2543,11 @@ PWINDOW_OBJECT FASTCALL UserGetAncestor(PWINDOW_OBJECT Wnd, UINT Type) { PWINDOW_OBJECT WndAncestor, Parent; + if (Wnd->hSelf == IntGetDesktopWindow()) + { + return NULL; + } + switch (Type) { case GA_PARENT: