diff options
author | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 11:03:27 +0100 |
---|---|---|
committer | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 11:03:27 +0100 |
commit | 3167373512c562f8f040203d2ee29084c76d00a0 (patch) | |
tree | a2e0c7cd972f7babd5b97ee04dfc923c6a069721 /event.c | |
parent | 4cff744438a8ee1dc3928503a297c73cc9ad96d0 (diff) | |
download | dwm-3167373512c562f8f040203d2ee29084c76d00a0.tar.gz |
fixed configurerequest according to the problem Jukka reported
Diffstat (limited to 'event.c')
-rw-r--r-- | event.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/event.c b/event.c index e20a60a..fbce631 100644 --- a/event.c +++ b/event.c @@ -165,6 +165,7 @@ buttonpress(XEvent *e) { static void configurerequest(XEvent *e) { + int x, y, w, h; Client *c; XConfigureRequestEvent *ev = &e->xconfigurerequest; XWindowChanges wc; @@ -174,20 +175,24 @@ configurerequest(XEvent *e) { if(ev->value_mask & CWBorderWidth) c->border = ev->border_width; if(c->isfixed || c->isfloat || (arrange == dofloat)) { - if(ev->value_mask & CWX) - c->x = ev->x; - if(ev->value_mask & CWY) - c->y = ev->y; - if(ev->value_mask & CWWidth) - c->w = ev->width; - if(ev->value_mask & CWHeight) - c->h = ev->height; + x = (ev->value_mask & CWX) ? ev->x : c->x; + y = (ev->value_mask & CWY) ? ev->y : c->y; + w = (ev->value_mask & CWWidth) ? ev->width : c->w; + h = (ev->value_mask & CWHeight) ? ev->height : c->h; if((ev->value_mask & (CWX | CWY)) && !(ev->value_mask & (CWWidth | CWHeight))) + { + c->x = x; + c->y = y; configure(c); - resize(c, c->x, c->y, c->w, c->h, False); - if(!isvisible(c)) - ban(c); + if(isvisible(c)) + XMoveWindow(dpy, c->win, c->x, c->y); + } + else { + resize(c, x, y, w, h, False); + if(!isvisible(c)) + ban(c); + } } else configure(c); |