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 | |
| parent | 4cff744438a8ee1dc3928503a297c73cc9ad96d0 (diff) | |
fixed configurerequest according to the problem Jukka reported
| -rw-r--r-- | event.c | 27 | 
1 files changed, 16 insertions, 11 deletions
| @@ -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); | 
