summaryrefslogtreecommitdiff
path: root/hw/xquartz/xpr
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xquartz/xpr')
-rw-r--r--hw/xquartz/xpr/xprAppleWM.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/hw/xquartz/xpr/xprAppleWM.c b/hw/xquartz/xpr/xprAppleWM.c
index b13db0637..9c44e20a2 100644
--- a/hw/xquartz/xpr/xprAppleWM.c
+++ b/hw/xquartz/xpr/xprAppleWM.c
@@ -38,6 +38,7 @@
#include "applewmExt.h"
#include "rootless.h"
+#include "rootlessCommon.h"
#include <Xplugin.h>
#include <X11/X.h>
#include "quartz.h"
@@ -49,13 +50,24 @@ static int xprSetWindowLevel(
{
xp_window_id wid;
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));
if (wid == 0)
return BadWindow;
RootlessStopDrawing (pWin, FALSE);
-
+ winRec = WINREC(pWin);
+
+ if(!winRec)
+ return BadWindow;
+
if(quartzEnableRootless)
wc.window_level = normal_window_levels[level];
else
@@ -65,6 +77,8 @@ static int xprSetWindowLevel(
return BadValue;
}
+ winRec->level = level;
+
return Success;
}