Removed WIN_GetDesktop().
diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c
index eb6bde8..3470ea4 100644
--- a/dlls/x11drv/winpos.c
+++ b/dlls/x11drv/winpos.c
@@ -1284,22 +1284,20 @@
{
HWND hwndInsertAfter = HWND_TOP;
WND *pWndCheck = WIN_FindWndPtr(hWndCheck);
- WND *pDesktop = WIN_GetDesktop();
- WND *pWnd, *pWndZ = WIN_LockWndPtr(pDesktop->child);
+ WND *top = WIN_FindWndPtr( GetTopWindow(0) );
+ WND *pWnd, *pWndZ = top;
Window w, parent, *children = NULL;
unsigned total, check, pos, best;
if( !__check_query_condition(&pWndZ, &pWnd) )
{
WIN_ReleaseWndPtr(pWndCheck);
- WIN_ReleaseWndPtr(pDesktop->child);
- WIN_ReleaseDesktop();
+ WIN_ReleaseWndPtr(top);
return hwndInsertAfter;
}
WIN_LockWndPtr(pWndZ);
WIN_LockWndPtr(pWnd);
- WIN_ReleaseWndPtr(pDesktop->child);
- WIN_ReleaseDesktop();
+ WIN_ReleaseWndPtr(top);
parent = __get_common_ancestor( display, get_whole_window(pWndZ),
get_whole_window(pWnd), &children, &total );
diff --git a/include/win.h b/include/win.h
index 77ead3f..02d3b40 100644
--- a/include/win.h
+++ b/include/win.h
@@ -84,8 +84,6 @@
extern WND* WIN_LockWndPtr(WND *wndPtr);
extern void WIN_ReleaseWndPtr(WND *wndPtr);
extern void WIN_UpdateWndPtr(WND **oldPtr,WND *newPtr);
-extern WND* WIN_GetDesktop(void);
-extern void WIN_ReleaseDesktop(void);
extern void WIN_DumpWindow( HWND hwnd );
extern void WIN_WalkWindows( HWND hwnd, int indent );
extern BOOL WIN_UnlinkWindow( HWND hwnd );
diff --git a/windows/painting.c b/windows/painting.c
index cb25b4d..6f73fe1 100644
--- a/windows/painting.c
+++ b/windows/painting.c
@@ -165,7 +165,7 @@
wnd->hwndSelf, wnd->hrgnUpdate, hRgn, uncFlags, wnd->flags & WIN_NEEDS_NCPAINT);
/* desktop window doesn't have a nonclient area */
- if(wnd == WIN_GetDesktop())
+ if(wnd->hwndSelf == GetDesktopWindow())
{
wnd->flags &= ~WIN_NEEDS_NCPAINT;
if( wnd->hrgnUpdate > 1 )
@@ -174,10 +174,8 @@
{
hrgnRet = wnd->hrgnUpdate;
}
- WIN_ReleaseDesktop();
return hrgnRet;
}
- WIN_ReleaseDesktop();
if ((wnd->hwndSelf == GetForegroundWindow()) &&
!(wnd->flags & WIN_NCACTIVATED) )
@@ -498,7 +496,6 @@
static void RDW_ValidateParent(WND *wndChild)
{
WND *wndParent = WIN_LockWndPtr(wndChild->parent);
- WND *wndDesktop = WIN_GetDesktop();
HRGN hrg;
if (wndChild->hrgnUpdate == 1 ) {
@@ -511,7 +508,7 @@
} else
hrg = wndChild->hrgnUpdate;
- while ((wndParent) && (wndParent != wndDesktop) ) {
+ while ((wndParent) && (wndParent->hwndSelf != GetDesktopWindow()) ) {
if (!(wndParent->dwStyle & WS_CLIPCHILDREN))
{
if (wndParent->hrgnUpdate != 0)
@@ -543,7 +540,6 @@
}
if (hrg != wndChild->hrgnUpdate) DeleteObject( hrg );
WIN_ReleaseWndPtr(wndParent);
- WIN_ReleaseDesktop();
}
/***********************************************************************
diff --git a/windows/win.c b/windows/win.c
index 704f660..e070ab8 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -216,44 +216,6 @@
/***********************************************************************
- * WIN_WalkWindows
- *
- * Walk the windows tree and print each window on stderr.
- */
-void WIN_WalkWindows( HWND hwnd, int indent )
-{
- WND *ptr;
- char className[80];
-
- ptr = hwnd ? WIN_FindWndPtr( hwnd ) : WIN_GetDesktop();
-
- if (!ptr)
- {
- WARN("Invalid window handle %04x\n", hwnd );
- return;
- }
-
- if (!indent) /* first time around */
- DPRINTF( "%-16.16s %-8.8s %-6.6s %-17.17s %-8.8s %s\n",
- "hwnd", " wndPtr", "queue", "Class Name", " Style", " WndProc"
- " Text");
-
- while (ptr)
- {
- DPRINTF( "%*s%04x%*s", indent, "", ptr->hwndSelf, 13-indent,"");
-
- GetClassNameA( ptr->hwndSelf, className, sizeof(className) );
- DPRINTF( "%08lx %-6.4x %-17.17s %08x %08x %.14s\n",
- (DWORD)ptr, ptr->hmemTaskQ, className,
- (UINT)ptr->dwStyle, (UINT)ptr->winproc,
- ptr->text ? debugstr_w(ptr->text) : "<null>");
-
- if (ptr->child) WIN_WalkWindows( ptr->child->hwndSelf, indent+1 );
- WIN_UpdateWndPtr(&ptr,ptr->next);
- }
-}
-
-/***********************************************************************
* WIN_UnlinkWindow
*
* Remove a window from the siblings linked list.
@@ -1206,12 +1168,8 @@
/* Initialization */
+ if (hwnd == GetDesktopWindow()) return FALSE; /* Can't destroy desktop */
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE;
- if (wndPtr == pWndDesktop)
- {
- retvalue = FALSE; /* Can't destroy desktop */
- goto end;
- }
/* Look whether the focus is within the tree of windows we will
* be destroying.
@@ -1548,24 +1506,6 @@
/**********************************************************************
- * WIN_GetDesktop
- * returns a locked pointer
- */
-WND *WIN_GetDesktop(void)
-{
- return WIN_LockWndPtr(pWndDesktop);
-}
-/**********************************************************************
- * WIN_ReleaseDesktop
- * unlock the desktop pointer
- */
-void WIN_ReleaseDesktop(void)
-{
- WIN_ReleaseWndPtr(pWndDesktop);
-}
-
-
-/**********************************************************************
* GetDesktopWindow (USER.286)
*/
HWND16 WINAPI GetDesktopWindow16(void)
@@ -2433,15 +2373,8 @@
*/
HWND WINAPI GetTopWindow( HWND hwnd )
{
- HWND retval = 0;
- WND * wndPtr = (hwnd) ?
- WIN_FindWndPtr( hwnd ) : WIN_GetDesktop();
-
- if (wndPtr && wndPtr->child)
- retval = wndPtr->child->hwndSelf;
-
- WIN_ReleaseWndPtr(wndPtr);
- return retval;
+ if (!hwnd) hwnd = GetDesktopWindow();
+ return GetWindow( hwnd, GW_CHILD );
}
diff --git a/windows/winpos.c b/windows/winpos.c
index 3a5eaf6..19e0a15 100644
--- a/windows/winpos.c
+++ b/windows/winpos.c
@@ -1550,14 +1550,11 @@
if (wndPtr && !(wndPtr->dwStyle & WS_CHILD) && !(wndPtr->dwExStyle & WS_EX_MANAGED))
{
/* check Z-order and bring hWnd to the top */
- for (wndTemp = WIN_LockWndPtr(WIN_GetDesktop()->child); wndTemp; WIN_UpdateWndPtr(&wndTemp,wndTemp->next))
- {
- if (wndTemp->dwStyle & WS_VISIBLE) break;
- }
- WIN_ReleaseDesktop();
- WIN_ReleaseWndPtr(wndTemp);
+ HWND tmp = GetTopWindow(0);
+ while (tmp && !(GetWindowLongA( tmp, GWL_STYLE ) & WS_VISIBLE))
+ tmp = GetWindow( tmp, GW_HWNDNEXT );
- if( wndTemp != wndPtr )
+ if( tmp != hWnd )
SetWindowPos(hWnd, HWND_TOP, 0,0,0,0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE );
if (!IsWindow(hWnd))