Removed WIN_GetDesktop().

oldstable
Alexandre Julliard 2001-08-21 17:13:55 +00:00
parent 588ff3743a
commit fa42aa81e4
5 changed files with 13 additions and 91 deletions

View File

@ -1284,22 +1284,20 @@ static HWND query_zorder( Display *display, HWND hWndCheck)
{ {
HWND hwndInsertAfter = HWND_TOP; HWND hwndInsertAfter = HWND_TOP;
WND *pWndCheck = WIN_FindWndPtr(hWndCheck); WND *pWndCheck = WIN_FindWndPtr(hWndCheck);
WND *pDesktop = WIN_GetDesktop(); WND *top = WIN_FindWndPtr( GetTopWindow(0) );
WND *pWnd, *pWndZ = WIN_LockWndPtr(pDesktop->child); WND *pWnd, *pWndZ = top;
Window w, parent, *children = NULL; Window w, parent, *children = NULL;
unsigned total, check, pos, best; unsigned total, check, pos, best;
if( !__check_query_condition(&pWndZ, &pWnd) ) if( !__check_query_condition(&pWndZ, &pWnd) )
{ {
WIN_ReleaseWndPtr(pWndCheck); WIN_ReleaseWndPtr(pWndCheck);
WIN_ReleaseWndPtr(pDesktop->child); WIN_ReleaseWndPtr(top);
WIN_ReleaseDesktop();
return hwndInsertAfter; return hwndInsertAfter;
} }
WIN_LockWndPtr(pWndZ); WIN_LockWndPtr(pWndZ);
WIN_LockWndPtr(pWnd); WIN_LockWndPtr(pWnd);
WIN_ReleaseWndPtr(pDesktop->child); WIN_ReleaseWndPtr(top);
WIN_ReleaseDesktop();
parent = __get_common_ancestor( display, get_whole_window(pWndZ), parent = __get_common_ancestor( display, get_whole_window(pWndZ),
get_whole_window(pWnd), &children, &total ); get_whole_window(pWnd), &children, &total );

View File

@ -84,8 +84,6 @@ extern WND* WIN_FindWndPtr( HWND hwnd );
extern WND* WIN_LockWndPtr(WND *wndPtr); extern WND* WIN_LockWndPtr(WND *wndPtr);
extern void WIN_ReleaseWndPtr(WND *wndPtr); extern void WIN_ReleaseWndPtr(WND *wndPtr);
extern void WIN_UpdateWndPtr(WND **oldPtr,WND *newPtr); 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_DumpWindow( HWND hwnd );
extern void WIN_WalkWindows( HWND hwnd, int indent ); extern void WIN_WalkWindows( HWND hwnd, int indent );
extern BOOL WIN_UnlinkWindow( HWND hwnd ); extern BOOL WIN_UnlinkWindow( HWND hwnd );

View File

@ -165,7 +165,7 @@ static HRGN WIN_UpdateNCRgn(WND* wnd, HRGN hRgn, UINT uncFlags )
wnd->hwndSelf, wnd->hrgnUpdate, hRgn, uncFlags, wnd->flags & WIN_NEEDS_NCPAINT); wnd->hwndSelf, wnd->hrgnUpdate, hRgn, uncFlags, wnd->flags & WIN_NEEDS_NCPAINT);
/* desktop window doesn't have a nonclient area */ /* desktop window doesn't have a nonclient area */
if(wnd == WIN_GetDesktop()) if(wnd->hwndSelf == GetDesktopWindow())
{ {
wnd->flags &= ~WIN_NEEDS_NCPAINT; wnd->flags &= ~WIN_NEEDS_NCPAINT;
if( wnd->hrgnUpdate > 1 ) if( wnd->hrgnUpdate > 1 )
@ -174,10 +174,8 @@ static HRGN WIN_UpdateNCRgn(WND* wnd, HRGN hRgn, UINT uncFlags )
{ {
hrgnRet = wnd->hrgnUpdate; hrgnRet = wnd->hrgnUpdate;
} }
WIN_ReleaseDesktop();
return hrgnRet; return hrgnRet;
} }
WIN_ReleaseDesktop();
if ((wnd->hwndSelf == GetForegroundWindow()) && if ((wnd->hwndSelf == GetForegroundWindow()) &&
!(wnd->flags & WIN_NCACTIVATED) ) !(wnd->flags & WIN_NCACTIVATED) )
@ -498,7 +496,6 @@ HBRUSH16 WINAPI GetControlBrush16( HWND16 hwnd, HDC16 hdc, UINT16 ctlType )
static void RDW_ValidateParent(WND *wndChild) static void RDW_ValidateParent(WND *wndChild)
{ {
WND *wndParent = WIN_LockWndPtr(wndChild->parent); WND *wndParent = WIN_LockWndPtr(wndChild->parent);
WND *wndDesktop = WIN_GetDesktop();
HRGN hrg; HRGN hrg;
if (wndChild->hrgnUpdate == 1 ) { if (wndChild->hrgnUpdate == 1 ) {
@ -511,7 +508,7 @@ static void RDW_ValidateParent(WND *wndChild)
} else } else
hrg = wndChild->hrgnUpdate; hrg = wndChild->hrgnUpdate;
while ((wndParent) && (wndParent != wndDesktop) ) { while ((wndParent) && (wndParent->hwndSelf != GetDesktopWindow()) ) {
if (!(wndParent->dwStyle & WS_CLIPCHILDREN)) if (!(wndParent->dwStyle & WS_CLIPCHILDREN))
{ {
if (wndParent->hrgnUpdate != 0) if (wndParent->hrgnUpdate != 0)
@ -543,7 +540,6 @@ static void RDW_ValidateParent(WND *wndChild)
} }
if (hrg != wndChild->hrgnUpdate) DeleteObject( hrg ); if (hrg != wndChild->hrgnUpdate) DeleteObject( hrg );
WIN_ReleaseWndPtr(wndParent); WIN_ReleaseWndPtr(wndParent);
WIN_ReleaseDesktop();
} }
/*********************************************************************** /***********************************************************************

View File

@ -215,44 +215,6 @@ void WIN_DumpWindow( HWND hwnd )
} }
/***********************************************************************
* 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 * WIN_UnlinkWindow
* *
@ -1206,12 +1168,8 @@ BOOL WINAPI DestroyWindow( HWND hwnd )
/* Initialization */ /* Initialization */
if (hwnd == GetDesktopWindow()) return FALSE; /* Can't destroy desktop */
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE; 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 /* Look whether the focus is within the tree of windows we will
* be destroying. * be destroying.
@ -1547,24 +1505,6 @@ HWND WINAPI FindWindowW( LPCWSTR className, LPCWSTR title )
} }
/**********************************************************************
* 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) * GetDesktopWindow (USER.286)
*/ */
@ -2433,15 +2373,8 @@ HWND16 WINAPI GetTopWindow16( HWND16 hwnd )
*/ */
HWND WINAPI GetTopWindow( HWND hwnd ) HWND WINAPI GetTopWindow( HWND hwnd )
{ {
HWND retval = 0; if (!hwnd) hwnd = GetDesktopWindow();
WND * wndPtr = (hwnd) ? return GetWindow( hwnd, GW_CHILD );
WIN_FindWndPtr( hwnd ) : WIN_GetDesktop();
if (wndPtr && wndPtr->child)
retval = wndPtr->child->hwndSelf;
WIN_ReleaseWndPtr(wndPtr);
return retval;
} }

View File

@ -1550,14 +1550,11 @@ BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse, BOOL fChangeFocus)
if (wndPtr && !(wndPtr->dwStyle & WS_CHILD) && !(wndPtr->dwExStyle & WS_EX_MANAGED)) if (wndPtr && !(wndPtr->dwStyle & WS_CHILD) && !(wndPtr->dwExStyle & WS_EX_MANAGED))
{ {
/* check Z-order and bring hWnd to the top */ /* check Z-order and bring hWnd to the top */
for (wndTemp = WIN_LockWndPtr(WIN_GetDesktop()->child); wndTemp; WIN_UpdateWndPtr(&wndTemp,wndTemp->next)) HWND tmp = GetTopWindow(0);
{ while (tmp && !(GetWindowLongA( tmp, GWL_STYLE ) & WS_VISIBLE))
if (wndTemp->dwStyle & WS_VISIBLE) break; tmp = GetWindow( tmp, GW_HWNDNEXT );
}
WIN_ReleaseDesktop();
WIN_ReleaseWndPtr(wndTemp);
if( wndTemp != wndPtr ) if( tmp != hWnd )
SetWindowPos(hWnd, HWND_TOP, 0,0,0,0, SetWindowPos(hWnd, HWND_TOP, 0,0,0,0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE ); SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE );
if (!IsWindow(hWnd)) if (!IsWindow(hWnd))