mirror of
https://github.com/0intro/wmii
synced 2025-02-08 18:34:43 +03:00
Fix MWM hints. Fix ConfigureRequest botch.
This commit is contained in:
parent
80433fe838
commit
268260d225
@ -222,10 +222,10 @@ gravclient(Client *c, Rectangle rd) {
|
||||
r = c->sel->r;
|
||||
else
|
||||
r = c->sel->revert;
|
||||
r = gravitate(c->w.r, r, h->grav);
|
||||
r = gravitate(r, c->r, h->grav);
|
||||
if(h->gravstatic)
|
||||
r = rectaddpt(r, sp);
|
||||
return r;
|
||||
return frame2client(c->sel, r);
|
||||
}else {
|
||||
r = client2frame(nil, rd);
|
||||
r = gravitate(r, rd, h->grav);
|
||||
@ -528,35 +528,35 @@ updatemwm(Client *c) {
|
||||
All = 0x1,
|
||||
Border = 0x2,
|
||||
Title = 0x8,
|
||||
FlagDecor = 0x2,
|
||||
Flags = 0,
|
||||
Decor = 2,
|
||||
};
|
||||
Rectangle r;
|
||||
ulong *ret, decor;
|
||||
ulong *ret;
|
||||
Atom real;
|
||||
int n;
|
||||
|
||||
n = getproperty(&c->w, "_MOTIF_WM_HINTS", "_MOTIF_WM_HINTS", &real,
|
||||
2L, (void*)&ret, 1L);
|
||||
0L, (void*)&ret, 3L);
|
||||
|
||||
if(n == 0) {
|
||||
if(c->sel)
|
||||
r = frame2client(c->sel, c->sel->r);
|
||||
if(n >= 3 && (ret[Flags]&FlagDecor)) {
|
||||
if(ret[Decor]&All)
|
||||
ret[Decor] ^= ~0;
|
||||
c->borderless = ((ret[Decor]&Border)==0);
|
||||
c->titleless = ((ret[Decor]&Title)==0);
|
||||
}else {
|
||||
c->borderless = 0;
|
||||
c->titleless = 0;
|
||||
}else {
|
||||
decor = *ret;
|
||||
free(ret);
|
||||
}
|
||||
free(ret);
|
||||
|
||||
if(c->sel)
|
||||
r = frame2client(c->sel, c->sel->r);
|
||||
|
||||
if(decor&All)
|
||||
decor ^= ~0;
|
||||
c->borderless = ((decor&Border)==0);
|
||||
c->titleless = ((decor&Title)==0);
|
||||
|
||||
if(c->sel) {
|
||||
r = client2frame(c->sel, c->sel->r);
|
||||
resize_client(c, &r);
|
||||
draw_frame(c->sel);
|
||||
}
|
||||
if(c->sel) {
|
||||
r = client2frame(c->sel, r);
|
||||
resize_client(c, &r);
|
||||
draw_frame(c->sel);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -320,6 +320,7 @@ utfutf(char *s1, char *s2)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* This iconv crud is not by Ken or Rob. It is in the Public Domain. */
|
||||
char*
|
||||
toutf8n(char *str, size_t nstr) {
|
||||
static iconv_t cd;
|
||||
|
@ -575,17 +575,21 @@ getproperty(Window *w, char *prop, char *type, Atom *actual, ulong offset, uchar
|
||||
Atom typea;
|
||||
ulong n, extra;
|
||||
int status, format;
|
||||
|
||||
|
||||
typea = (type ? xatom(type) : 0L);
|
||||
|
||||
status = XGetWindowProperty(display, w->w,
|
||||
xatom(prop), offset, length, False /* delete */,
|
||||
typea, actual, &format, &n, &extra, ret);
|
||||
|
||||
if(status != Success)
|
||||
if(status != Success) {
|
||||
*ret = nil;
|
||||
return 0;
|
||||
if(n == 0)
|
||||
}
|
||||
if(n == 0) {
|
||||
free(*ret);
|
||||
*ret = nil;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
@ -801,5 +805,5 @@ gravitate(Rectangle rc, Rectangle rf, Point grav) {
|
||||
d = divpt(d, Pt(2, 2));
|
||||
d = mulpt(d, grav);
|
||||
|
||||
return rectaddpt(rc, d);
|
||||
return rectsubpt(rc, d);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user