diff options
| author | Anselm R Garbe <garbeam@gmail.com> | 2008-08-23 09:54:55 +0100 | 
|---|---|---|
| committer | Anselm R Garbe <garbeam@gmail.com> | 2008-08-23 09:54:55 +0100 | 
| commit | db5db8806f4bbb26bb1259f7ea42d7a826517bbb (patch) | |
| tree | c7d1e0e25c6f3536928fce515d8495d38b50f8cc | |
| parent | 258c3380305683de8031871cf95c1cc04ed7ad9e (diff) | |
| download | dwm-db5db8806f4bbb26bb1259f7ea42d7a826517bbb.tar.gz | |
applied Peter Hartlich's patch regarding aspect calculation with slight modifications
| -rw-r--r-- | dwm.c | 23 | 
1 files changed, 17 insertions, 6 deletions
| @@ -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 */ | 
