| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | /* See LICENSE file for copyright and license details. */double mfact = MFACT;int bx, by, bw, bh, blw, mx, my, mw, mh, tx, ty, tw, th, wx, wy, ww, wh;void setmfact(const char *arg);void tile(void);void tilegeom(void);void tileresize(Client *c, int x, int y, int w, int h);voidsetmfact(const char *arg) {	double d;	if(lt->arrange != tile)		return;	if(!arg)		mfact = MFACT;	else {		d = strtod(arg, NULL);		if(arg[0] == '-' || arg[0] == '+')			d += mfact;		if(d < 0.1 || d > 0.9)			return;		mfact = d;	}	updategeom();	arrange();}voidtile(void) {	int y, h;	unsigned int i, n;	Client *c;	for(n = 0, c = nextunfloating(clients); c; c = nextunfloating(c->next), n++);	if(n == 0)		return;	/* master */	c = nextunfloating(clients);	if(n == 1)		tileresize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw);	else		tileresize(c, mx, my, mw - 2 * c->bw, mh - 2 * c->bw);	if(--n == 0)		return;	/* tile stack */	y = ty;	h = th / n;	if(h < bh)		h = th;	for(i = 0, c = nextunfloating(c->next); c; c = nextunfloating(c->next), i++) {		if(i + 1 == n) /* remainder */			tileresize(c, tx, y, tw - 2 * c->bw, (ty + th) - y - 2 * c->bw);		else			tileresize(c, tx, y, tw - 2 * c->bw, h - 2 * c->bw);		if(h != th)			y = c->y + c->h + 2 * c->bw;	}}voidtilegeom(void) {	/* master area geometry */	mx = wx;	my = wy;	mw = mfact * ww;	mh = wh;	/* tile area geometry */	tx = mx + mw;	ty = wy;	tw = ww - mw;	th = wh;}voidtileresize(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);}voidzoom(const char *arg) {	Client *c = sel;	if(c == nextunfloating(clients))		if(!c || !(c = nextunfloating(c->next)))			return;	if(lt->arrange == tile && !sel->isfloating) {		detach(c);		attach(c);		focus(c);	}	arrange();}
 |