tapplied Peter Hartlich's patch regarding aspect calculation with slight modifi… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit db5db8806f4bbb26bb1259f7ea42d7a826517bbb | |
parent 258c3380305683de8031871cf95c1cc04ed7ad9e | |
Author: Anselm R Garbe <[email protected]> | |
Date: Sat, 23 Aug 2008 09:54:55 +0100 | |
applied Peter Hartlich's patch regarding aspect calculation with slight modific… | |
Diffstat: | |
M dwm.c | 23 +++++++++++++++++------ | |
1 file changed, 17 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
t@@ -1046,23 +1046,34 @@ quit(const Arg *arg) { | |
void | |
resize(Client *c, int x, int y, int w, int h, Bool sizehints) { | |
+ float a; | |
XWindowChanges wc; | |
if(sizehints) { | |
+ /* see last two sentences in ICCCM 4.1.2.3 */ | |
+ Bool baseismin = c->basew == c->minw && c->baseh == c->minh; | |
+ | |
/* set minimum possible */ | |
w = MAX(1, w); | |
h = MAX(1, h); | |
- /* temporarily remove base dimensions */ | |
- w -= c->basew; | |
- h -= c->baseh; | |
+ if(!baseismin) { /* temporarily remove base dimensions */ | |
+ w -= c->basew; | |
+ h -= c->baseh; | |
+ } | |
/* adjust for aspect limits */ | |
if(c->mina > 0 && c->maxa > 0) { | |
- if(c->maxa < (float) w/h) | |
+ a = (float) w/h; | |
+ if(a > c->maxa) | |
w = h * c->maxa; | |
- else if(c->mina > (float) h/w) | |
- h = w * c->mina; | |
+ else if(a < c->mina) | |
+ h = w / c->mina; | |
+ } | |
+ | |
+ if(baseismin) { /* increment calculation requires this */ | |
+ w -= c->basew; | |
+ h -= c->baseh; | |
} | |
/* adjust for increment value */ |