--- xvmisc.c.orig Fri Jan 13 23:41:34 1995
+++ xvmisc.c Sat Mar 8 16:05:19 1997
@@ -97,10 +97,18 @@
if (!usesize || !(i&WidthValue)) w = defw;
if (!usesize || !(i&HeightValue)) h = defh;
- hints.flags |= USSize;
+ hints.flags |= USSize | PWinGravity;
- if (i&XValue && i&XNegative) x = dispWIDE - w - abs(x);
- if (i&YValue && i&YNegative) y = dispHIGH - h - abs(y);
+ hints.win_gravity = NorthWestGravity;
+ if (i&XValue && i&XNegative) {
+ hints.win_gravity = NorthEastGravity;
+ x = dispWIDE - (w + 2 * bwidth) - abs(x);
+ }
+ if (i&YValue && i&YNegative) {
+ hints.win_gravity = (hints.win_gravity == NorthWestGravity) ?
+ SouthWestGravity : SouthEastGravity;
+ y = dispHIGH - (h + 2 * bwidth) - abs(y);
+ }
#define VROOT_TRANS
@@ -136,19 +144,18 @@
if (!win) return(win); /* leave immediately if couldn't create */
- XSetStandardProperties(theDisp, win, name, name, None, NULL, 0, &hints);
-
xwmh.input = True;
xwmh.flags = InputHint;
if (iconPix) { xwmh.icon_pixmap = iconPix; xwmh.flags |= IconPixmapHint; }
- XSetWMHints(theDisp, win, &xwmh);
if (clname && strlen(clname)) {
classh.res_name = "xv";
classh.res_class = clname;
- XSetClassHint(theDisp, win, &classh);
StoreDeleteWindowProp(win);
}
+
+ XmbSetWMProperties(theDisp, win, name, name, NULL, 0, &hints, &xwmh,
+ clname ? &classh : NULL);
return(win);
}