diff options
| author | Anselm R. Garbe <arg@suckless.org> | 2007-02-13 13:39:33 +0100 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@suckless.org> | 2007-02-13 13:39:33 +0100 | 
| commit | 71857b87ee4e5ce63594d062143e6ea78f842b0d (patch) | |
| tree | 0227631c0e98178d885ebb1e539dd2437246e5a1 | |
| parent | 6ba400ee0fa55d1178cac5f38f4465a1ddf30490 (diff) | |
simplified configurerequest
| -rw-r--r-- | client.c | 25 | ||||
| -rw-r--r-- | event.c | 51 | 
2 files changed, 29 insertions, 47 deletions
| @@ -69,19 +69,20 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {  void  configure(Client *c) { -	XEvent synev; +	XConfigureEvent ce; -	synev.type = ConfigureNotify; -	synev.xconfigure.display = dpy; -	synev.xconfigure.event = c->win; -	synev.xconfigure.window = c->win; -	synev.xconfigure.x = c->x; -	synev.xconfigure.y = c->y; -	synev.xconfigure.width = c->w; -	synev.xconfigure.height = c->h; -	synev.xconfigure.border_width = c->border; -	synev.xconfigure.above = None; -	XSendEvent(dpy, c->win, True, NoEventMask, &synev); +	ce.type = ConfigureNotify; +	ce.display = dpy; +	ce.event = c->win; +	ce.window = c->win; +	ce.x = c->x; +	ce.y = c->y; +	ce.width = c->w; +	ce.height = c->h; +	ce.border_width = c->border; +	ce.above = None; +	ce.override_redirect = False; +	XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);  }  void @@ -166,52 +166,33 @@ buttonpress(XEvent *e) {  static void  configurerequest(XEvent *e) { -	unsigned long newmask;  	Client *c;  	XConfigureRequestEvent *ev = &e->xconfigurerequest;  	XWindowChanges wc; +	wc.x = ev->x; +	wc.y = ev->y; +	wc.width = ev->width; +	wc.height = ev->height; +	wc.border_width = ev->border_width; +	wc.sibling = ev->above; +	wc.stack_mode = ev->detail;  	if((c = getclient(ev->window))) {  		c->ismax = False; -		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;  		if(ev->value_mask & CWBorderWidth)  			c->border = ev->border_width; -		wc.x = c->x; -		wc.y = c->y; -		wc.width = c->w; -		wc.height = c->h; -		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); -		if(newmask) -			XConfigureWindow(dpy, c->win, newmask, &wc); -		else +		if((!c->isfloat && (arrange != dofloat)) +			|| ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))) +		{  			configure(c); -		XSync(dpy, False); -		if(c->isfloat) { -			resize(c, False); -			if(!isvisible(c)) -				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +			XSync(dpy, False); +			return;  		} -		else -			arrange(); -	} -	else { -		wc.x = ev->x; -		wc.y = ev->y; -		wc.width = ev->width; -		wc.height = ev->height; -		wc.border_width = ev->border_width; -		wc.sibling = ev->above; -		wc.stack_mode = ev->detail; -		XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); -		XSync(dpy, False);  	} +	XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); +	if(c && !isvisible(c)) +		XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +	XSync(dpy, False);  }  static void | 
