diff options
| author | Anselm R. Garbe <garbeam@gmail.com> | 2007-07-28 17:18:45 +0200 | 
|---|---|---|
| committer | Anselm R. Garbe <garbeam@gmail.com> | 2007-07-28 17:18:45 +0200 | 
| commit | a54cf2ecef2ca83441dccd454c694b92bca42a16 (patch) | |
| tree | d793de29a6ceeafba2d0030c64a076d5dfd6ffa8 | |
| parent | 4b9337a01e7f12058ce54ed65d69e64748397498 (diff) | |
changed ban/unban implementation to not move the windows anymore, but map/unmap them instead - PLEASE TEST THIS
| -rw-r--r-- | client.c | 17 | ||||
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | dwm.h | 1 | ||||
| -rw-r--r-- | event.c | 6 | 
4 files changed, 15 insertions, 11 deletions
| @@ -98,10 +98,12 @@ attach(Client *c) {  void  ban(Client *c) { -	if (c->isbanned) +	if(c->isbanned)  		return; -	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +	XUnmapWindow(dpy, c->win); +	setclientstate(c, IconicState);  	c->isbanned = True; +	c->unmapped++;  }  void @@ -135,7 +137,7 @@ detach(Client *c) {  void  focus(Client *c) { -	if((!c && selscreen)|| (c && !isvisible(c))) +	if((!c && selscreen) || (c && !isvisible(c)))  		for(c = stack; c && !isvisible(c); c = c->snext);  	if(sel && sel != c) {  		grabbuttons(sel, False); @@ -224,9 +226,7 @@ manage(Window w, XWindowAttributes *wa) {  		c->isfloating = (rettrans == Success) || c->isfixed;  	attach(c);  	attachstack(c); -	ban(c); -	XMapWindow(dpy, w); -	setclientstate(c, NormalState); +	c->isbanned = True;  	focus(c);  	lt->arrange();  } @@ -308,9 +308,10 @@ togglefloating(const char *arg) {  void  unban(Client *c) { -	if (!c->isbanned) +	if(!c->isbanned)  		return; -	XMoveWindow(dpy, c->win, c->x, c->y); +	XMapWindow(dpy, c->win); +	setclientstate(c, NormalState);  	c->isbanned = False;  } @@ -1,5 +1,5 @@  # dwm version -VERSION = 4.3 +VERSION = 4.4  # Customize below to fit your system @@ -48,6 +48,7 @@ struct Client {  	int rx, ry, rw, rh; /* revert geometry */  	int basew, baseh, incw, inch, maxw, maxh, minw, minh;  	int minax, maxax, minay, maxay; +	int unmapped;  	long flags;   	unsigned int border, oldborder;  	Bool isbanned, isfixed, ismax, isfloating; @@ -336,8 +336,10 @@ unmapnotify(XEvent *e) {  	Client *c;  	XUnmapEvent *ev = &e->xunmap; -	if((c = getclient(ev->window))) -		unmanage(c); +	if((c = getclient(ev->window)) && (ev->event == root)) { +		if(ev->send_event || c->unmapped-- == 0) +			unmanage(c); +	}  }  /* extern */ | 
