yet another small fix and simplification of dotile
acdea319
1 file(s) · +10 −18
| 95 | 95 | restack(); |
|
| 96 | 96 | } |
|
| 97 | 97 | ||
| 98 | - | /* This algorithm is based on a (M)aster area and a (S)tacking area. |
|
| 99 | - | * It supports following arrangements: |
|
| 100 | - | * SSMMM MMMMM MMMSS |
|
| 101 | - | * SSMMM SSSSS MMMSS |
|
| 102 | - | */ |
|
| 103 | 98 | void |
|
| 104 | 99 | dotile(Arg *arg) { |
|
| 105 | - | unsigned int i, n, md, stackw, stackh, th; |
|
| 100 | + | unsigned int i, n, mpx, stackw, stackh, th; |
|
| 106 | 101 | Client *c; |
|
| 107 | 102 | ||
| 108 | 103 | for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
|
| 109 | 104 | n++; |
|
| 110 | 105 | ||
| 111 | - | md = (sw * master) / 1000; |
|
| 112 | - | stackw = sw - md; |
|
| 106 | + | mpx = (sw * master) / 1000; |
|
| 107 | + | stackw = sw - mpx; |
|
| 113 | 108 | stackh = sh - bh; |
|
| 114 | 109 | ||
| 115 | 110 | th = stackh; |
|
| 116 | 111 | if(n > 1) |
|
| 117 | 112 | th /= (n - 1); |
|
| 118 | 113 | ||
| 119 | - | for(i = 0, c = clients; c; c = c->next) { |
|
| 114 | + | for(i = 0, c = clients; c; c = c->next, i++) |
|
| 120 | 115 | if(isvisible(c)) { |
|
| 121 | 116 | if(c->isfloat) { |
|
| 122 | 117 | resize(c, True, TopLeft); |
|
| 130 | 125 | c->h = sh - 2 * BORDERPX - bh; |
|
| 131 | 126 | } |
|
| 132 | 127 | else if(i == 0) { /* master window */ |
|
| 133 | - | c->w = md - 2 * BORDERPX; |
|
| 128 | + | c->w = mpx - 2 * BORDERPX; |
|
| 134 | 129 | c->h = sh - bh - 2 * BORDERPX; |
|
| 135 | 130 | } |
|
| 136 | 131 | else { /* tile window */ |
|
| 137 | - | c->x += md; |
|
| 132 | + | c->x += mpx; |
|
| 133 | + | c->w = stackw - 2 * BORDERPX; |
|
| 138 | 134 | if(th > bh) { |
|
| 139 | 135 | c->y = sy + (i - 1) * th + bh; |
|
| 140 | 136 | if(i + 1 == n) |
|
| 141 | 137 | c->h = sh - c->y - 2 * BORDERPX; |
|
| 142 | - | c->w = stackw - 2 * BORDERPX; |
|
| 143 | - | c->h = th - 2 * BORDERPX; |
|
| 138 | + | else |
|
| 139 | + | c->h = th - 2 * BORDERPX; |
|
| 144 | 140 | } |
|
| 145 | - | else { /* fallback if th < bh */ |
|
| 146 | - | c->w = stackw - 2 * BORDERPX; |
|
| 141 | + | else /* fallback if th < bh */ |
|
| 147 | 142 | c->h = stackh - 2 * BORDERPX; |
|
| 148 | - | } |
|
| 149 | 143 | } |
|
| 150 | 144 | resize(c, False, TopLeft); |
|
| 151 | - | i++; |
|
| 152 | 145 | } |
|
| 153 | 146 | else |
|
| 154 | 147 | ban(c); |
|
| 155 | - | } |
|
| 156 | 148 | if(!sel || !isvisible(sel)) { |
|
| 157 | 149 | for(c = stack; c && !isvisible(c); c = c->snext); |
|
| 158 | 150 | focus(c); |
|