diff options
| -rw-r--r-- | client.c | 10 | ||||
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | dwm.h | 3 | ||||
| -rw-r--r-- | event.c | 2 | ||||
| -rw-r--r-- | view.c | 9 | 
5 files changed, 19 insertions, 7 deletions
| @@ -68,6 +68,14 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {  /* extern */  void +ban(Client *c) { +	if(!c || c->isbanned) +		return; +	c->isbanned = True; +	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +} + +void  configure(Client *c) {  	XConfigureEvent ce; @@ -190,7 +198,7 @@ manage(Window w, XWindowAttributes *wa) {  	c->next = clients;  	c->snext = stack;  	stack = clients = c; -	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +	ban(c);  	XMapWindow(dpy, c->win);  	setclientstate(c, NormalState);  	if(isvisible(c)) @@ -1,5 +1,5 @@  # dwm version -VERSION = 3.5 +VERSION = 3.6  # Customize below to fit your system @@ -73,7 +73,7 @@ struct Client {  	int minax, minay, maxax, maxay;  	long flags;   	unsigned int border; -	Bool isfixed, isfloat, ismax; +	Bool isbanned, isfixed, isfloat, ismax;  	Bool *tags;  	Client *next;  	Client *prev; @@ -99,6 +99,7 @@ extern Display *dpy;  extern Window root, barwin;  /* client.c */ +extern void ban(Client *c);			/* ban c */  extern void configure(Client *c);		/* send synthetic configure event */  extern void focus(Client *c);			/* focus c, c may be NULL */  extern Client *getclient(Window w);		/* return client of w */ @@ -189,7 +189,7 @@ configurerequest(XEvent *e) {  				configure(c);  			resize(c, False);  			if(!isvisible(c)) -				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +				ban(c);  		}  		else  			configure(c); @@ -55,10 +55,12 @@ dofloat(void) {  	Client *c;  	for(c = clients; c; c = c->next) { -		if(isvisible(c)) +		if(isvisible(c)) { +			c->isbanned = False;  			resize(c, True); +		}  		else -			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +			ban(c);  	}  	if(!sel || !isvisible(sel)) {  		for(c = stack; c && !isvisible(c); c = c->snext); @@ -82,6 +84,7 @@ dotile(void) {  	for(i = 0, c = clients; c; c = c->next)  		if(isvisible(c)) { +			c->isbanned = False;  			if(c->isfloat) {  				resize(c, True);  				continue; @@ -108,7 +111,7 @@ dotile(void) {  			i++;  		}  		else -			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +			ban(c);  	if(!sel || !isvisible(sel)) {  		for(c = stack; c && !isvisible(c); c = c->snext);  		focus(c); | 
