Restore the pre-r17946 UserGetAncestor behaviour and fix the code
calling it.
Modified: trunk/reactos/subsys/win32k/ntuser/focus.c
Modified: trunk/reactos/subsys/win32k/ntuser/window.c
_____
Modified: trunk/reactos/subsys/win32k/ntuser/focus.c
--- trunk/reactos/subsys/win32k/ntuser/focus.c 2005-09-20 10:31:57 UTC
(rev 17946)
+++ trunk/reactos/subsys/win32k/ntuser/focus.c 2005-09-20 10:45:27 UTC
(rev 17947)
@@ -520,7 +520,7 @@
}
TopWnd = UserGetAncestor(Window, GA_ROOT);
- if (TopWnd->hSelf != UserGetActiveWindow())
+ if (TopWnd && TopWnd->hSelf != UserGetActiveWindow())
{
// PWINDOW_OBJECT WndTops = UserGetWindowObject(hWndTop);
UserRefObjectCo(TopWnd);
_____
Modified: trunk/reactos/subsys/win32k/ntuser/window.c
--- trunk/reactos/subsys/win32k/ntuser/window.c 2005-09-20 10:31:57 UTC
(rev 17946)
+++ trunk/reactos/subsys/win32k/ntuser/window.c 2005-09-20 10:45:27 UTC
(rev 17947)
@@ -1374,9 +1374,9 @@
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 WndAncestor, Parent;
+ if (Wnd->hSelf == IntGetDesktopWindow())
+ {
+ return NULL;
+ }
+
switch (Type)
{
case GA_PARENT: