Commit | Line | Data |
---|---|---|
03330c08 AT |
1 | void |
2 | tcl(Monitor * m) | |
3 | { | |
4 | int x, y, h, w, mw, sw, bdw; | |
5 | unsigned int i, n; | |
6 | Client * c; | |
7 | ||
8 | for (n = 0, c = nexttiled(m->clients); c; | |
9 | c = nexttiled(c->next), n++); | |
10 | ||
11 | if (n == 0) | |
12 | return; | |
13 | ||
14 | c = nexttiled(m->clients); | |
15 | ||
16 | mw = m->mfact * m->ww; | |
17 | sw = (m->ww - mw) / 2; | |
18 | bdw = (2 * c->bw); | |
19 | resize(c, | |
20 | n < 3 ? m->wx : m->wx + sw, | |
21 | m->wy, | |
22 | n == 1 ? m->ww - bdw : mw - bdw, | |
23 | m->wh - bdw, | |
24 | False); | |
25 | ||
26 | if (--n == 0) | |
27 | return; | |
28 | ||
29 | w = (m->ww - mw) / ((n > 1) + 1); | |
30 | c = nexttiled(c->next); | |
31 | ||
32 | if (n > 1) | |
33 | { | |
34 | x = m->wx + ((n > 1) ? mw + sw : mw); | |
35 | y = m->wy; | |
36 | h = m->wh / (n / 2); | |
37 | ||
38 | if (h < bh) | |
39 | h = m->wh; | |
40 | ||
41 | for (i = 0; c && i < n / 2; c = nexttiled(c->next), i++) | |
42 | { | |
43 | resize(c, | |
44 | x, | |
45 | y, | |
46 | w - bdw, | |
47 | (i + 1 == n / 2) ? m->wy + m->wh - y - bdw : h - bdw, | |
48 | False); | |
49 | ||
50 | if (h != m->wh) | |
51 | y = c->y + HEIGHT(c); | |
52 | } | |
53 | } | |
54 | ||
55 | x = (n + 1 / 2) == 1 ? mw : m->wx; | |
56 | y = m->wy; | |
57 | h = m->wh / ((n + 1) / 2); | |
58 | ||
59 | if (h < bh) | |
60 | h = m->wh; | |
61 | ||
62 | for (i = 0; c; c = nexttiled(c->next), i++) | |
63 | { | |
64 | resize(c, | |
65 | x, | |
66 | y, | |
67 | (i + 1 == (n + 1) / 2) ? w - bdw : w - bdw, | |
68 | (i + 1 == (n + 1) / 2) ? m->wy + m->wh - y - bdw : h - bdw, | |
69 | False); | |
70 | ||
71 | if (h != m->wh) | |
72 | y = c->y + HEIGHT(c); | |
73 | } | |
74 | } |