Mercurial > aewl
comparison view.c @ 524:1a9a0877650c
keep master ratio on resizecol -> arrange
author | Anselm R. Garbe <arg@10kloc.org> |
---|---|
date | Thu, 05 Oct 2006 12:59:35 +0200 |
parents | c1dd19da63ef |
children | c71952fa3c7c |
comparison
equal
deleted
inserted
replaced
523:c1dd19da63ef | 524:1a9a0877650c |
---|---|
1 /* | 1 /* |
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | 2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> |
3 * See LICENSE file for license details. | 3 * See LICENSE file for license details. |
4 */ | 4 */ |
5 #include "dwm.h" | 5 #include "dwm.h" |
6 | |
7 #define MINDIM 100 | |
8 | 6 |
9 /* static */ | 7 /* static */ |
10 | 8 |
11 static Client * | 9 static Client * |
12 minclient(void) { | 10 minclient(void) { |
104 * SSMMM SSSSS MMMSS | 102 * SSMMM SSSSS MMMSS |
105 */ | 103 */ |
106 void | 104 void |
107 dotile(Arg *arg) { | 105 dotile(Arg *arg) { |
108 int i, n, stackw, stackh, tw, th; | 106 int i, n, stackw, stackh, tw, th; |
107 unsigned int md = ((stackpos == StackBottom ? sh - bh : sw) * master) / 100; | |
109 Client *c; | 108 Client *c; |
110 | 109 |
111 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) | 110 for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
112 n++; | 111 n++; |
113 | 112 |
114 if(stackpos == StackBottom) { | 113 if(stackpos == StackBottom) { |
115 stackw = sw; | 114 stackw = sw; |
116 stackh = sh - bh - master; | 115 stackh = sh - bh - md; |
117 } | 116 } |
118 else { | 117 else { |
119 stackw = sw - master; | 118 stackw = sw - md; |
120 stackh = sh - bh; | 119 stackh = sh - bh; |
121 } | 120 } |
122 | 121 |
123 tw = stackw; | 122 tw = stackw; |
124 if(n > 1) | 123 if(n > 1) |
143 if(stackpos == StackLeft) | 142 if(stackpos == StackLeft) |
144 c->x += stackw; | 143 c->x += stackw; |
145 switch(stackpos) { | 144 switch(stackpos) { |
146 case StackLeft: | 145 case StackLeft: |
147 case StackRight: | 146 case StackRight: |
148 c->w = master - 2 * BORDERPX; | 147 c->w = md - 2 * BORDERPX; |
149 c->h = sh - bh - 2 * BORDERPX; | 148 c->h = sh - bh - 2 * BORDERPX; |
150 break; | 149 break; |
151 case StackBottom: | 150 case StackBottom: |
152 c->w = sw - 2 * BORDERPX; | 151 c->w = sw - 2 * BORDERPX; |
153 c->h = master - 2 * BORDERPX; | 152 c->h = md - 2 * BORDERPX; |
154 break; | 153 break; |
155 } | 154 } |
156 } | 155 } |
157 else { /* tile window */ | 156 else { /* tile window */ |
158 if(stackpos == StackRight) | 157 if(stackpos == StackRight) |
159 c->x += master; | 158 c->x += md; |
160 if(th > bh) { | 159 if(th > bh) { |
161 switch(stackpos) { | 160 switch(stackpos) { |
162 case StackLeft: | 161 case StackLeft: |
163 case StackRight: | 162 case StackRight: |
164 c->y = sy + (i - 1) * th + bh; | 163 c->y = sy + (i - 1) * th + bh; |
165 if(i + 1 == n) | 164 if(i + 1 == n) |
166 c->h = sh - c->y - 2 * BORDERPX; | 165 c->h = sh - c->y - 2 * BORDERPX; |
167 break; | 166 break; |
168 case StackBottom: | 167 case StackBottom: |
169 c->y = sy + master + (i - 1) * th + bh; | 168 c->y = sy + md + (i - 1) * th + bh; |
170 if(i + 1 == n) | 169 if(i + 1 == n) |
171 c->h = sh - c->y - 2 * BORDERPX; | 170 c->h = sh - c->y - 2 * BORDERPX; |
172 break; | 171 break; |
173 } | 172 } |
174 c->w = tw - 2 * BORDERPX; | 173 c->w = tw - 2 * BORDERPX; |
175 c->h = th - 2 * BORDERPX; | 174 c->h = th - 2 * BORDERPX; |
176 } | 175 } |
177 else { /* fallback if th < bh */ | 176 else { /* fallback if th < bh */ |
178 if(stackpos == StackBottom) | 177 if(stackpos == StackBottom) |
179 c->y += master; | 178 c->y += md; |
180 c->w = stackw - 2 * BORDERPX; | 179 c->w = stackw - 2 * BORDERPX; |
181 c->h = stackh - 2 * BORDERPX; | 180 c->h = stackh - 2 * BORDERPX; |
182 } | 181 } |
183 } | 182 } |
184 resize(c, False, TopLeft); | 183 resize(c, False, TopLeft); |
236 return False; | 235 return False; |
237 } | 236 } |
238 | 237 |
239 void | 238 void |
240 resizecol(Arg *arg) { | 239 resizecol(Arg *arg) { |
241 int s; | |
242 unsigned int n; | 240 unsigned int n; |
243 Client *c; | 241 Client *c; |
244 | 242 |
245 for(n = 0, c = clients; c; c = c->next) | 243 for(n = 0, c = clients; c; c = c->next) |
246 if(isvisible(c) && !c->isfloat) | 244 if(isvisible(c) && !c->isfloat) |
247 n++; | 245 n++; |
248 if(!sel || sel->isfloat || n < 2 || (arrange == dofloat)) | 246 if(!sel || sel->isfloat || n < 2 || (arrange == dofloat)) |
249 return; | 247 return; |
250 | 248 |
251 s = stackpos == StackBottom ? sh - bh : sw; | |
252 if(sel == getnext(clients)) { | 249 if(sel == getnext(clients)) { |
253 if(master + arg->i > s - MINDIM || master + arg->i < MINDIM) | 250 if(master + arg->i > 95 || master + arg->i < 5) |
254 return; | 251 return; |
255 master += arg->i; | 252 master += arg->i; |
256 } | 253 } |
257 else { | 254 else { |
258 if(master - arg->i > s - MINDIM || master - arg->i < MINDIM) | 255 if(master - arg->i > 95 || master - arg->i < 5) |
259 return; | 256 return; |
260 master -= arg->i; | 257 master -= arg->i; |
261 } | 258 } |
262 arrange(NULL); | 259 arrange(NULL); |
263 } | 260 } |
319 return; | 316 return; |
320 if(stackpos == StackBottom) | 317 if(stackpos == StackBottom) |
321 stackpos = STACKPOS; | 318 stackpos = STACKPOS; |
322 else | 319 else |
323 stackpos = StackBottom; | 320 stackpos = StackBottom; |
324 master = ((stackpos == StackBottom ? sh - bh : sw) * MASTER) / 100; | |
325 arrange(NULL); | 321 arrange(NULL); |
326 } | 322 } |
327 | 323 |
328 void | 324 void |
329 view(Arg *arg) { | 325 view(Arg *arg) { |