calculating the remainder for master and stack area correctly
e45b3ced
1 file(s) · +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; |
|