XQuartz: xprSetWindowLevel updated to store the level requested by the WM

(cherry picked from commit c28c2ddc3a8f3c5b9beec396953bb3ac9ee4714b)
This commit is contained in:
Jeremy Huddleston 2009-04-09 20:00:37 -07:00
parent dfb0d7aefb
commit 808fd2c67f

View File

@ -38,6 +38,7 @@
#include "applewmExt.h" #include "applewmExt.h"
#include "rootless.h" #include "rootless.h"
#include "rootlessCommon.h"
#include <Xplugin.h> #include <Xplugin.h>
#include <X11/X.h> #include <X11/X.h>
#include "quartz.h" #include "quartz.h"
@ -49,13 +50,24 @@ static int xprSetWindowLevel(
{ {
xp_window_id wid; xp_window_id wid;
xp_window_changes wc; xp_window_changes wc;
RootlessWindowRec *winRec;
// AppleWMNumWindowLevels is allowed, but is only set by the server
// for the root window.
if (level < 0 || level >= AppleWMNumWindowLevels) {
return BadValue;
}
wid = x_cvt_vptr_to_uint(RootlessFrameForWindow (pWin, TRUE)); wid = x_cvt_vptr_to_uint(RootlessFrameForWindow (pWin, TRUE));
if (wid == 0) if (wid == 0)
return BadWindow; return BadWindow;
RootlessStopDrawing (pWin, FALSE); RootlessStopDrawing (pWin, FALSE);
winRec = WINREC(pWin);
if(!winRec)
return BadWindow;
if(quartzEnableRootless) if(quartzEnableRootless)
wc.window_level = normal_window_levels[level]; wc.window_level = normal_window_levels[level];
else else
@ -65,6 +77,8 @@ static int xprSetWindowLevel(
return BadValue; return BadValue;
} }
winRec->level = level;
return Success; return Success;
} }