diff options
| -rw-r--r-- | view.c | 28 | 
1 files changed, 10 insertions, 18 deletions
| @@ -95,28 +95,23 @@ dofloat(Arg *arg) {  	restack();  } -/* This algorithm is based on a (M)aster area and a (S)tacking area. - * It supports following arrangements: - * 	SSMMM	MMMMM	MMMSS - * 	SSMMM	SSSSS	MMMSS - */  void  dotile(Arg *arg) { -	unsigned int i, n, md, stackw, stackh, th; +	unsigned int i, n, mpx, stackw, stackh, th;  	Client *c;  	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))  		n++; -	md = (sw * master) / 1000; -	stackw = sw - md; +	mpx = (sw * master) / 1000; +	stackw = sw - mpx;  	stackh = sh - bh;  	th = stackh;  	if(n > 1)  		th /= (n - 1); -	for(i = 0, c = clients; c; c = c->next) { +	for(i = 0, c = clients; c; c = c->next, i++)  		if(isvisible(c)) {  			if(c->isfloat) {  				resize(c, True, TopLeft); @@ -130,29 +125,26 @@ dotile(Arg *arg) {  				c->h = sh - 2 * BORDERPX - bh;  			}  			else if(i == 0) { /* master window */ -				c->w = md - 2 * BORDERPX; +				c->w = mpx - 2 * BORDERPX;  				c->h = sh - bh - 2 * BORDERPX;  			}  			else {  /* tile window */ -				c->x += md; +				c->x += mpx; +				c->w = stackw - 2 * BORDERPX;  				if(th > bh) {  					c->y = sy + (i - 1) * th + bh;  					if(i + 1 == n)  						c->h = sh - c->y - 2 * BORDERPX; -					c->w = stackw - 2 * BORDERPX; -					c->h = th - 2 * BORDERPX; +					else +						c->h = th - 2 * BORDERPX;  				} -				else { /* fallback if th < bh */ -					c->w = stackw - 2 * BORDERPX; +				else /* fallback if th < bh */  					c->h = stackh - 2 * BORDERPX; -				}  			}  			resize(c, False, TopLeft); -			i++;  		}  		else  			ban(c); -	}  	if(!sel || !isvisible(sel)) {  		for(c = stack; c && !isvisible(c); c = c->snext);  		focus(c); | 
