101 * SSMMM MMMMM MMMSS |
100 * SSMMM MMMMM MMMSS |
102 * SSMMM SSSSS MMMSS |
101 * SSMMM SSSSS MMMSS |
103 */ |
102 */ |
104 void |
103 void |
105 dotile(Arg *arg) { |
104 dotile(Arg *arg) { |
106 unsigned int i, n, md, stackw, stackh, tw, th; |
105 unsigned int i, n, md, stackw, stackh, th; |
107 Client *c; |
106 Client *c; |
108 |
107 |
109 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
108 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
110 n++; |
109 n++; |
111 |
110 |
112 if(stackpos == StackBottom) { |
111 md = (sw * master) / 1000; |
113 md = ((sh - bh) * master) / 1000; |
112 stackw = sw - md; |
114 stackw = sw; |
113 stackh = sh - bh; |
115 stackh = sh - bh - md; |
114 |
116 } |
115 th = stackh; |
117 else { |
|
118 md = (sw * master) / 1000; |
|
119 stackw = sw - md; |
|
120 stackh = sh - bh; |
|
121 } |
|
122 |
|
123 tw = stackw; |
|
124 if(n > 1) |
116 if(n > 1) |
125 th = stackh / (n - 1); |
117 th /= (n - 1); |
126 else |
|
127 th = stackh; |
|
128 |
118 |
129 for(i = 0, c = clients; c; c = c->next) { |
119 for(i = 0, c = clients; c; c = c->next) { |
130 if(isvisible(c)) { |
120 if(isvisible(c)) { |
131 if(c->isfloat) { |
121 if(c->isfloat) { |
132 resize(c, True, TopLeft); |
122 resize(c, True, TopLeft); |
138 if(n == 1) { /* only 1 window */ |
128 if(n == 1) { /* only 1 window */ |
139 c->w = sw - 2 * BORDERPX; |
129 c->w = sw - 2 * BORDERPX; |
140 c->h = sh - 2 * BORDERPX - bh; |
130 c->h = sh - 2 * BORDERPX - bh; |
141 } |
131 } |
142 else if(i == 0) { /* master window */ |
132 else if(i == 0) { /* master window */ |
143 if(stackpos == StackLeft) |
133 c->w = md - 2 * BORDERPX; |
144 c->x += stackw; |
134 c->h = sh - bh - 2 * BORDERPX; |
145 switch(stackpos) { |
|
146 case StackLeft: |
|
147 case StackRight: |
|
148 c->w = md - 2 * BORDERPX; |
|
149 c->h = sh - bh - 2 * BORDERPX; |
|
150 break; |
|
151 case StackBottom: |
|
152 c->w = sw - 2 * BORDERPX; |
|
153 c->h = md - 2 * BORDERPX; |
|
154 break; |
|
155 } |
|
156 } |
135 } |
157 else { /* tile window */ |
136 else { /* tile window */ |
158 if(stackpos == StackRight) |
137 c->x += md; |
159 c->x += md; |
|
160 if(th > bh) { |
138 if(th > bh) { |
161 switch(stackpos) { |
139 c->y = sy + (i - 1) * th + bh; |
162 case StackLeft: |
140 if(i + 1 == n) |
163 case StackRight: |
141 c->h = sh - c->y - 2 * BORDERPX; |
164 c->y = sy + (i - 1) * th + bh; |
142 c->w = stackw - 2 * BORDERPX; |
165 if(i + 1 == n) |
|
166 c->h = sh - c->y - 2 * BORDERPX; |
|
167 break; |
|
168 case StackBottom: |
|
169 c->y = sy + md + (i - 1) * th + bh; |
|
170 if(i + 1 == n) |
|
171 c->h = sh - c->y - 2 * BORDERPX; |
|
172 break; |
|
173 } |
|
174 c->w = tw - 2 * BORDERPX; |
|
175 c->h = th - 2 * BORDERPX; |
143 c->h = th - 2 * BORDERPX; |
176 } |
144 } |
177 else { /* fallback if th < bh */ |
145 else { /* fallback if th < bh */ |
178 if(stackpos == StackBottom) |
|
179 c->y += md; |
|
180 c->w = stackw - 2 * BORDERPX; |
146 c->w = stackw - 2 * BORDERPX; |
181 c->h = stackh - 2 * BORDERPX; |
147 c->h = stackh - 2 * BORDERPX; |
182 } |
148 } |
183 } |
149 } |
184 resize(c, False, TopLeft); |
150 resize(c, False, TopLeft); |
306 seltag[arg->i] = !seltag[arg->i]; |
272 seltag[arg->i] = !seltag[arg->i]; |
307 for(i = 0; i < ntags && !seltag[i]; i++); |
273 for(i = 0; i < ntags && !seltag[i]; i++); |
308 if(i == ntags) |
274 if(i == ntags) |
309 seltag[arg->i] = True; /* cannot toggle last view */ |
275 seltag[arg->i] = True; /* cannot toggle last view */ |
310 reorder(); |
276 reorder(); |
311 arrange(NULL); |
|
312 } |
|
313 |
|
314 void |
|
315 togglestackpos(Arg *arg) { |
|
316 if(arrange == dofloat) |
|
317 return; |
|
318 if(stackpos == StackBottom) |
|
319 stackpos = STACKPOS; |
|
320 else |
|
321 stackpos = StackBottom; |
|
322 arrange(NULL); |
277 arrange(NULL); |
323 } |
278 } |
324 |
279 |
325 void |
280 void |
326 view(Arg *arg) { |
281 view(Arg *arg) { |