mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-10 08:10:19 +01:00
For the topmost Windows window, explicitly raise its X counterpart to the
top in Z order to keep correct stacking when there is a minimized
window which formerly obscured it.
This commit is contained in:
parent
6557c4b546
commit
1064c98fec
3 changed files with 68 additions and 16 deletions
57
hw/xfree86/os-support/misc/PortIO.S
Normal file
57
hw/xfree86/os-support/misc/PortIO.S
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S,v 1.1 2004/02/02 03:55:32 dawes Exp $ */
|
||||
|
||||
/* Port I/O functions for platforms with no inlining. */
|
||||
|
||||
#include "assyntax.h"
|
||||
|
||||
FILE("PortIO.s")
|
||||
|
||||
AS_BEGIN
|
||||
|
||||
GLOBL GLNAME(outb)
|
||||
GLOBL GLNAME(outw)
|
||||
GLOBL GLNAME(outl)
|
||||
GLOBL GLNAME(inb)
|
||||
GLOBL GLNAME(inw)
|
||||
GLOBL GLNAME(inl)
|
||||
|
||||
SEG_TEXT
|
||||
ALIGNTEXT4
|
||||
GLNAME(outb):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
MOV_L (REGOFF(8,ESP), EAX)
|
||||
OUT_B
|
||||
RET
|
||||
|
||||
ALIGNTEXT4
|
||||
GLNAME(outw):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
MOV_L (REGOFF(8,ESP), EAX)
|
||||
OUT_W
|
||||
RET
|
||||
|
||||
ALIGNTEXT4
|
||||
GLNAME(outl):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
MOV_L (REGOFF(8,ESP), EAX)
|
||||
OUT_L
|
||||
RET
|
||||
|
||||
ALIGNTEXT4
|
||||
GLNAME(inb):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
IN_B
|
||||
RET
|
||||
|
||||
ALIGNTEXT4
|
||||
GLNAME(inw):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
IN_L
|
||||
RET
|
||||
|
||||
ALIGNTEXT4
|
||||
GLNAME(inl):
|
||||
MOV_L (REGOFF(4,ESP), EDX)
|
||||
IN_L
|
||||
RET
|
||||
|
||||
|
|
@ -761,6 +761,7 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen)
|
|||
WindowPtr pWinSib = NULL;
|
||||
DWORD dwCurrentProcessID = GetCurrentProcessId ();
|
||||
DWORD dwWindowProcessID = 0;
|
||||
XID vlist[2];
|
||||
|
||||
#if CYGMULTIWINDOW_DEBUG
|
||||
ErrorF ("winReorderWindowsMultiWindow\n");
|
||||
|
|
@ -771,7 +772,7 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen)
|
|||
if (pScreenPriv->fWindowOrderChanged)
|
||||
{
|
||||
#if CYGMULTIWINDOW_DEBUG
|
||||
ErrorF ("winOrderWindowsMultiWindow - Need to restack\n");
|
||||
ErrorF ("winReorderWindowsMultiWindow - Need to restack\n");
|
||||
#endif
|
||||
hwnd = GetTopWindow (NULL);
|
||||
|
||||
|
|
@ -786,24 +787,19 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen)
|
|||
pWinSib = pWin;
|
||||
pWin = GetProp (hwnd, WIN_WINDOW_PROP);
|
||||
|
||||
if (pWinSib)
|
||||
{
|
||||
XID *vlist = malloc (sizeof(long) * 2);
|
||||
if (!pWinSib)
|
||||
{ /* 1st window - raise to the top */
|
||||
vlist[0] = Above;
|
||||
|
||||
if (vlist == NULL)
|
||||
{
|
||||
ErrorF ("winOrderWindowsMultiWindow - malloc () "
|
||||
"failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
((long*)vlist)[0] = winGetWindowID (pWinSib);
|
||||
((long*)vlist)[1] = Below;
|
||||
ConfigureWindow (pWin, CWStackMode, vlist, wClient(pWin));
|
||||
}
|
||||
else
|
||||
{ /* 2nd or deeper windows - just below the previous one */
|
||||
vlist[0] = winGetWindowID (pWinSib);
|
||||
vlist[1] = Below;
|
||||
|
||||
ConfigureWindow (pWin, CWSibling | CWStackMode,
|
||||
vlist, wClient(pWin));
|
||||
|
||||
free (vlist);
|
||||
}
|
||||
}
|
||||
hwnd = GetNextWindow (hwnd, GW_HWNDNEXT);
|
||||
|
|
|
|||
|
|
@ -207,7 +207,6 @@ ValidateSizing (HWND hwnd, WindowPtr pWin,
|
|||
WinXSizeHints sizeHints;
|
||||
RECT *rect;
|
||||
int iWidth, iHeight;
|
||||
POINT pt;
|
||||
|
||||
/* Invalid input checking */
|
||||
if (pWin==NULL || lParam==0)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue