equal
deleted
inserted
replaced
233 lt->arrange(); |
233 lt->arrange(); |
234 } |
234 } |
235 |
235 |
236 void |
236 void |
237 resize(Client *c, int x, int y, int w, int h, Bool sizehints) { |
237 resize(Client *c, int x, int y, int w, int h, Bool sizehints) { |
238 float dx, dy, max, min, ratio; |
238 double dx, dy, max, min, ratio; |
239 XWindowChanges wc; |
239 XWindowChanges wc; |
240 |
|
241 if(w <= 0 || h <= 0) |
|
242 return; |
|
243 if(sizehints) { |
240 if(sizehints) { |
244 if(c->minay > 0 && c->maxay > 0 && (h - c->baseh) > 0) { |
241 if(c->minay > 0 && c->maxay > 0 && (h - c->baseh) > 0 && (w - c->basew) > 0) { |
245 dx = (float)(w - c->basew); |
242 dx = (double)(w - c->basew); |
246 dy = (float)(h - c->baseh); |
243 dy = (double)(h - c->baseh); |
247 min = (float)(c->minax) / (float)(c->minay); |
244 min = (double)(c->minax) / (double)(c->minay); |
248 max = (float)(c->maxax) / (float)(c->maxay); |
245 max = (double)(c->maxax) / (double)(c->maxay); |
249 ratio = dx / dy; |
246 ratio = dx / dy; |
250 if(max > 0 && min > 0 && ratio > 0) { |
247 if(max > 0 && min > 0 && ratio > 0) { |
251 if(ratio < min) { |
248 if(ratio < min) { |
252 dy = (dx * min + dy) / (min * min + 1); |
249 dy = (dx * min + dy) / (min * min + 1); |
253 dx = dy * min; |
250 dx = dy * min; |
272 h = c->maxh; |
269 h = c->maxh; |
273 if(c->incw) |
270 if(c->incw) |
274 w -= (w - c->basew) % c->incw; |
271 w -= (w - c->basew) % c->incw; |
275 if(c->inch) |
272 if(c->inch) |
276 h -= (h - c->baseh) % c->inch; |
273 h -= (h - c->baseh) % c->inch; |
277 } |
274 if(w <= 0 || h <= 0) |
278 if(w <= 0 || h <= 0) |
275 return; |
279 return; |
276 } |
280 /* offscreen appearance fixes */ |
277 /* offscreen appearance fixes */ |
281 if(x > sw) |
278 if(x > sw) |
282 x = sw - w - 2 * c->border; |
279 x = sw - w - 2 * c->border; |
283 if(y > sh) |
280 if(y > sh) |
284 y = sh - h - 2 * c->border; |
281 y = sh - h - 2 * c->border; |