mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-08 02:08:04 +02:00
Fix window reordering. Remove winMWExtWMReorderWindows.
This commit is contained in:
parent
496313f8f7
commit
52fa100033
4 changed files with 58 additions and 27 deletions
|
|
@ -89,9 +89,4 @@ winBlockHandler_ProcessMessages:
|
||||||
DispatchMessage (&msg);
|
DispatchMessage (&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XWIN_MULTIWINDOWEXTWM
|
|
||||||
if (pScreenPriv->pScreenInfo->fMWExtWM)
|
|
||||||
winMWExtWMReorderWindows ((ScreenPtr)pBlockData);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,4 @@ winWakeupHandler (int nScreen,
|
||||||
DispatchMessage (&msg);
|
DispatchMessage (&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XWIN_MULTIWINDOWEXTWM
|
|
||||||
if (pScreenPriv->pScreenInfo->fMWExtWM)
|
|
||||||
winMWExtWMReorderWindows ((ScreenPtr)pWakeupData);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@
|
||||||
extern HICON g_hiconX;
|
extern HICON g_hiconX;
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
/*
|
/*
|
||||||
* winMWExtWMReorderWindows
|
* winMWExtWMReorderWindows
|
||||||
*/
|
*/
|
||||||
|
|
@ -54,6 +55,7 @@ winMWExtWMReorderWindows (ScreenPtr pScreen)
|
||||||
win32RootlessWindowPtr pRLWinSib = NULL;
|
win32RootlessWindowPtr pRLWinSib = NULL;
|
||||||
DWORD dwCurrentProcessID = GetCurrentProcessId ();
|
DWORD dwCurrentProcessID = GetCurrentProcessId ();
|
||||||
DWORD dwWindowProcessID = 0;
|
DWORD dwWindowProcessID = 0;
|
||||||
|
XID vlist[2];
|
||||||
|
|
||||||
#if CYGMULTIWINDOW_DEBUG && FALSE
|
#if CYGMULTIWINDOW_DEBUG && FALSE
|
||||||
ErrorF ("winMWExtWMReorderWindows\n");
|
ErrorF ("winMWExtWMReorderWindows\n");
|
||||||
|
|
@ -80,22 +82,19 @@ winMWExtWMReorderWindows (ScreenPtr pScreen)
|
||||||
|
|
||||||
if (pRLWinSib)
|
if (pRLWinSib)
|
||||||
{
|
{
|
||||||
XID *vlist = malloc (sizeof(long) * 2);
|
vlist[0] = pRLWinSib->pFrame->win->drawable.id;
|
||||||
|
vlist[1] = Below;
|
||||||
if (vlist == NULL)
|
|
||||||
{
|
|
||||||
ErrorF ("winMWExtWMReorderWindows - malloc () "
|
|
||||||
"failed\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
((long*)vlist)[0] = pRLWinSib->pFrame->win->drawable.id;
|
|
||||||
((long*)vlist)[1] = Below;
|
|
||||||
|
|
||||||
ConfigureWindow (pRLWin->pFrame->win, CWSibling | CWStackMode,
|
ConfigureWindow (pRLWin->pFrame->win, CWSibling | CWStackMode,
|
||||||
vlist, wClient(pRLWin->pFrame->win));
|
vlist, wClient(pRLWin->pFrame->win));
|
||||||
|
}
|
||||||
free (vlist);
|
else
|
||||||
|
{
|
||||||
|
/* 1st window - raise to the top */
|
||||||
|
vlist[0] = Above;
|
||||||
|
|
||||||
|
ConfigureWindow (pRLWin->pFrame->win, CWStackMode,
|
||||||
|
vlist, wClient(pRLWin->pFrame->win));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hwnd = GetNextWindow (hwnd, GW_HWNDNEXT);
|
hwnd = GetNextWindow (hwnd, GW_HWNDNEXT);
|
||||||
|
|
@ -104,8 +103,8 @@ winMWExtWMReorderWindows (ScreenPtr pScreen)
|
||||||
|
|
||||||
pScreenPriv->fRestacking = FALSE;
|
pScreenPriv->fRestacking = FALSE;
|
||||||
pScreenPriv->fWindowOrderChanged = FALSE;
|
pScreenPriv->fWindowOrderChanged = FALSE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,7 @@ winMWExtWMWindowProc (HWND hwnd, UINT message,
|
||||||
PAINTSTRUCT ps;
|
PAINTSTRUCT ps;
|
||||||
LPWINDOWPOS pWinPos = NULL;
|
LPWINDOWPOS pWinPos = NULL;
|
||||||
RECT rcClient;
|
RECT rcClient;
|
||||||
|
XID vlist[2];
|
||||||
|
|
||||||
/* Check if the Windows window property for our X window pointer is valid */
|
/* Check if the Windows window property for our X window pointer is valid */
|
||||||
if ((pRLWinPriv = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
|
if ((pRLWinPriv = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
|
||||||
|
|
@ -898,8 +899,48 @@ winMWExtWMWindowProc (HWND hwnd, UINT message,
|
||||||
|
|
||||||
/* Reorder if window z order was changed */
|
/* Reorder if window z order was changed */
|
||||||
if ((pScreenPriv != NULL)
|
if ((pScreenPriv != NULL)
|
||||||
&& !(pWinPos->flags & SWP_NOZORDER))
|
&& !(pWinPos->flags & SWP_NOZORDER)
|
||||||
pScreenPriv->fWindowOrderChanged = TRUE;
|
&& !(pWinPos->flags & SWP_SHOWWINDOW))
|
||||||
|
{
|
||||||
|
pScreenPriv->fWindowOrderChanged = TRUE;
|
||||||
|
if (pWinPos->hwndInsertAfter == HWND_TOP
|
||||||
|
||pWinPos->hwndInsertAfter == HWND_TOPMOST
|
||||||
|
||pWinPos->hwndInsertAfter == HWND_NOTOPMOST)
|
||||||
|
{
|
||||||
|
vlist[0] = Above;
|
||||||
|
ConfigureWindow (pWin, CWStackMode,
|
||||||
|
vlist, wClient(pWin));
|
||||||
|
}
|
||||||
|
#if 1
|
||||||
|
else if (pWinPos->hwndInsertAfter == HWND_BOTTOM)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HWND hWndAbove = NULL;
|
||||||
|
DWORD dwCurrentProcessID = GetCurrentProcessId ();
|
||||||
|
DWORD dwWindowProcessID = 0;
|
||||||
|
|
||||||
|
for (hWndAbove = pWinPos->hwndInsertAfter;
|
||||||
|
hWndAbove != NULL;
|
||||||
|
hWndAbove = GetNextWindow (hWndAbove, GW_HWNDPREV))
|
||||||
|
{
|
||||||
|
GetWindowThreadProcessId (hWndAbove, &dwWindowProcessID);
|
||||||
|
|
||||||
|
if ((dwWindowProcessID == dwCurrentProcessID)
|
||||||
|
&& GetProp (Above, WIN_WINDOW_PROP)
|
||||||
|
&& !IsIconic (hwnd) ) /* ignore minimized windows */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (hWndAbove == NULL)
|
||||||
|
{
|
||||||
|
vlist[0] = Above;
|
||||||
|
ConfigureWindow (pWin, CWStackMode,
|
||||||
|
vlist, wClient(pWin));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (!(pWinPos->flags & SWP_NOSIZE)) {
|
if (!(pWinPos->flags & SWP_NOSIZE)) {
|
||||||
if (IsIconic(hwnd)){
|
if (IsIconic(hwnd)){
|
||||||
|
|
@ -936,7 +977,8 @@ winMWExtWMWindowProc (HWND hwnd, UINT message,
|
||||||
}
|
}
|
||||||
if (!g_fNoConfigureWindow ) {
|
if (!g_fNoConfigureWindow ) {
|
||||||
|
|
||||||
if (!pRLWinPriv->fMovingOrSizing) {
|
if (!pRLWinPriv->fMovingOrSizing
|
||||||
|
&& (pWinPos->flags & SWP_SHOWWINDOW)) {
|
||||||
GetClientRect (hwnd, &rcClient);
|
GetClientRect (hwnd, &rcClient);
|
||||||
MapWindowPoints (hwnd, HWND_DESKTOP, (LPPOINT)&rcClient, 2);
|
MapWindowPoints (hwnd, HWND_DESKTOP, (LPPOINT)&rcClient, 2);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue