calculating the remainder for master and stack area correctly e45b3ced
Anselm R. Garbe · 2007-05-24 15:40 1 file(s) · +9 −6
layout.c +9 −6
15 15
16 16
static void
17 17
tile(void) {
18 -
	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th, remainder;
18 +
	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th;
19 19
	Client *c;
20 20
21 21
	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
24 24
	mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1);
25 25
	mw = (n > nmaster) ? (waw * masterw) / 1000 : waw;
26 26
	th = (n > nmaster) ? wah / (n - nmaster) : 0;
27 -
	remainder = (n > nmaster) ? wah - th * (n - nmaster) : 0;
28 27
	tw = waw - mw;
29 28
30 29
	for(i = 0, c = clients; c; c = c->next)
40 39
			if(i < nmaster) {
41 40
				ny += i * mh;
42 41
				nw = mw - 2 * c->border;
43 -
				nh = mh - 2 * c->border;
42 +
				nh = mh;
43 +
				if(i + 1 == nmaster) /* remainder */
44 +
					nh = wah - mh * i;
45 +
				nh -= 2 * c->border;
44 46
			}
45 47
			else {  /* tile window */
46 48
				nx += mw;
47 49
				nw = tw - 2 * c->border;
48 50
				if(th > 2 * c->border) {
49 51
					ny += (i - nmaster) * th;
50 -
					nh = th - 2 * c->border;
51 -
					if (i == n - 1)
52 -
						nh += remainder;
52 +
					nh = th;
53 +
					if(i + 1 == n) /* remainder */
54 +
						nh = wah - th * (i - nmaster);
55 +
					nh -= 2 * c->border;
53 56
				}
54 57
				else /* fallback if th <= 2 * c->border */
55 58
					nh = wah - 2 * c->border;