diff options
| author | Anselm R Garbe <garbeam@gmail.com> | 2008-03-13 13:59:40 +0000 | 
|---|---|---|
| committer | Anselm R Garbe <garbeam@gmail.com> | 2008-03-13 13:59:40 +0000 | 
| commit | 831428b00cf0bb6c7830c2178c8d13213f29b2db (patch) | |
| tree | a6abf32121b64f42247053a160162ec89ad83bf2 | |
| parent | 69439715c09ac36fe94f3cb7b1ed87149fc5ecff (diff) | |
some polishing in tileh/tilev
| -rw-r--r-- | dwm.c | 102 | 
1 files changed, 50 insertions, 52 deletions
| @@ -117,6 +117,7 @@ void cleanup(void);  void configure(Client *c);  void configurenotify(XEvent *e);  void configurerequest(XEvent *e); +unsigned int counttiled(void);  void destroynotify(XEvent *e);  void detach(Client *c);  void detachstack(Client *c); @@ -170,7 +171,8 @@ unsigned int textnw(const char *text, unsigned int len);  unsigned int textw(const char *text);  void tileh(void);  void tilehstack(unsigned int n); -unsigned int tilemaster(void); +Client *tilemaster(unsigned int n); +void tileresize(Client *c, int x, int y, int w, int h);  void tilev(void);  void tilevstack(unsigned int n);  void togglefloating(const char *arg); @@ -458,6 +460,15 @@ configurerequest(XEvent *e) {  	XSync(dpy, False);  } +unsigned int +counttiled(void) { +	unsigned int n; +	Client *c; + +	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++); +	return n; +} +  void  destroynotify(XEvent *e) {  	Client *c; @@ -1579,89 +1590,76 @@ textw(const char *text) {  }  void -tileresize(Client *c, int x, int y, int w, int h) { -	resize(c, x, y, w, h, RESIZEHINTS); -	if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) -		/* client doesn't accept size constraints */ -		resize(c, x, y, w, h, False); -} - -void  tileh(void) { -	tilehstack(tilemaster()); -} - -void -tilehstack(unsigned int n) { -	int i, x, w; +	int x, w; +	unsigned int i, n = counttiled();  	Client *c;  	if(n == 0)  		return; +	c = tilemaster(n); +	if(--n == 0) +		return;  	x = tx;  	w = tw / n;  	if(w < bh)  		w = tw; -	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) -		if(i > 0) { -			if(i > 1 && i == n) /* remainder */ -				tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, -				              th - 2 * c->border); -			else -				tileresize(c, x, ty, w - 2 * c->border, -				              th - 2 * c->border); -			if(w != tw) -				x = c->x + c->w + 2 * c->border; -		} +	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { +		if(i + 1 == n) /* remainder */ +			tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, th - 2 * c->border); +		else +			tileresize(c, x, ty, w - 2 * c->border, th - 2 * c->border); +		if(w != tw) +			x = c->x + c->w + 2 * c->border; +	}  } -unsigned int -tilemaster(void) { -	unsigned int n; -	Client *c, *mc; +Client * +tilemaster(unsigned int n) { +	Client *c = nexttiled(clients); -	for(n = 0, mc = c = nexttiled(clients); c; c = nexttiled(c->next)) -		n++; -	if(n == 0) -		return 0;  	if(n == 1) -		tileresize(mc, mox, moy, mow - 2 * mc->border, moh - 2 * mc->border); +		tileresize(c, mox, moy, mow - 2 * c->border, moh - 2 * c->border);  	else -		tileresize(mc, mx, my, mw - 2 * mc->border, mh - 2 * mc->border); -	return n - 1; +		tileresize(c, mx, my, mw - 2 * c->border, mh - 2 * c->border); +	return c;  }  void -tilev(void) { -	tilevstack(tilemaster()); +tileresize(Client *c, int x, int y, int w, int h) { +	resize(c, x, y, w, h, RESIZEHINTS); +	if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) +		/* client doesn't accept size constraints */ +		resize(c, x, y, w, h, False);  }  void -tilevstack(unsigned int n) { -	int i, y, h; +tilev(void) { +	int y, h; +	unsigned int i, n = counttiled();  	Client *c;  	if(n == 0)  		return; +	c = tilemaster(n); +	if(--n == 0) +		return;  	y = ty;  	h = th / n;  	if(h < bh)  		h = th; -	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) -		if(i > 0) { -			if(i > 1 && i == n) /* remainder */ -				tileresize(c, tx, y, tw - 2 * c->border, -				              (ty + th) - y - 2 * c->border); -			else -				tileresize(c, tx, y, tw - 2 * c->border, -				              h - 2 * c->border); -			if(h != th) -				y = c->y + c->h + 2 * c->border; -		} +	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { +		if(i + 1 == n) /* remainder */ +			tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y - 2 * c->border); +		else +			tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->border); +		if(h != th) +			y = c->y + c->h + 2 * c->border; +	}  }  void | 
