XQuartz: Update window levels when changing rootless state
This commit is contained in:
parent
80759a4186
commit
1359ded5bf
|
@ -162,10 +162,12 @@ xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
|
|||
mask |= XP_SHAPE;
|
||||
}
|
||||
|
||||
pFrame->level = !IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels;
|
||||
|
||||
if(quartzEnableRootless)
|
||||
wc.window_level = normal_window_levels[!IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels];
|
||||
wc.window_level = normal_window_levels[pFrame->level];
|
||||
else
|
||||
wc.window_level = rooted_window_levels[!IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels];
|
||||
wc.window_level = rooted_window_levels[pFrame->level];
|
||||
mask |= XP_WINDOW_LEVEL;
|
||||
|
||||
err = xp_create_window(mask, &wc, (xp_window_id *) &pFrame->wid);
|
||||
|
@ -252,28 +254,36 @@ xprResizeFrame(RootlessFrameID wid, ScreenPtr pScreen,
|
|||
/*
|
||||
* Change frame stacking.
|
||||
*/
|
||||
static void
|
||||
xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid)
|
||||
{
|
||||
static void xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid) {
|
||||
xp_window_changes wc;
|
||||
unsigned int mask = XP_STACKING;
|
||||
|
||||
TA_SERVER();
|
||||
|
||||
/* Stack frame below nextWid it if it exists, or raise
|
||||
/* Stack frame below nextWid it if it exists, or raise
|
||||
frame above everything otherwise. */
|
||||
|
||||
if (nextWid == NULL)
|
||||
{
|
||||
if(nextWid == NULL) {
|
||||
wc.stack_mode = XP_MAPPED_ABOVE;
|
||||
wc.sibling = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
wc.stack_mode = XP_MAPPED_BELOW;
|
||||
wc.sibling = x_cvt_vptr_to_uint(nextWid);
|
||||
}
|
||||
|
||||
xprConfigureWindow(x_cvt_vptr_to_uint(wid), XP_STACKING, &wc);
|
||||
if(window_hash) {
|
||||
RootlessWindowRec *winRec = x_hash_table_lookup(window_hash, x_cvt_uint_to_vptr((xp_window_id)wid), NULL);
|
||||
|
||||
if(winRec) {
|
||||
if(quartzEnableRootless)
|
||||
wc.window_level = normal_window_levels[winRec->level];
|
||||
else
|
||||
wc.window_level = rooted_window_levels[winRec->level];
|
||||
mask |= XP_WINDOW_LEVEL;
|
||||
}
|
||||
}
|
||||
|
||||
xprConfigureWindow(x_cvt_vptr_to_uint(wid), mask, &wc);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@ typedef struct _RootlessWindowRec {
|
|||
int x, y;
|
||||
unsigned int width, height;
|
||||
unsigned int borderWidth;
|
||||
int level;
|
||||
|
||||
RootlessFrameID wid; // implementation specific frame id
|
||||
WindowPtr win; // underlying X window
|
||||
|
|
|
@ -478,6 +478,7 @@ RootlessEnsureFrame(WindowPtr pWin)
|
|||
winRec->is_reorder_pending = FALSE;
|
||||
winRec->pixmap = NULL;
|
||||
winRec->wid = NULL;
|
||||
winRec->level = 0;
|
||||
|
||||
WINREC(pWin) = winRec;
|
||||
|
||||
|
|
Loading…
Reference in New Issue