diff options
Diffstat (limited to '')
| -rw-r--r-- | dwm.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| @@ -89,7 +89,7 @@ struct Client {  	float mina, maxa;  	int x, y, w, h;  	int oldx, oldy, oldw, oldh; -	int basew, baseh, incw, inch, maxw, maxh, minw, minh; +	int basew, baseh, incw, inch, maxw, maxh, minw, minh, hintsvalid;  	int bw, oldbw;  	unsigned int tags;  	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; @@ -345,6 +345,8 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact)  	if (*w < bh)  		*w = bh;  	if (resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) { +		if (!c->hintsvalid) +			updatesizehints(c);  		/* see last two sentences in ICCCM 4.1.2.3 */  		baseismin = c->basew == c->minw && c->baseh == c->minh;  		if (!baseismin) { /* temporarily remove base dimensions */ @@ -1059,7 +1061,6 @@ manage(Window w, XWindowAttributes *wa)  	XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);  	configure(c); /* propagates border_width, if size doesn't change */  	updatewindowtype(c); -	updatesizehints(c);  	updatewmhints(c);  	XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);  	grabbuttons(c, 0); @@ -1233,7 +1234,7 @@ propertynotify(XEvent *e)  				arrange(c->mon);  			break;  		case XA_WM_NORMAL_HINTS: -			updatesizehints(c); +			c->hintsvalid = 0;  			break;  		case XA_WM_HINTS:  			updatewmhints(c); @@ -1989,6 +1990,7 @@ updatesizehints(Client *c)  	} else  		c->maxa = c->mina = 0.0;  	c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->maxh == c->minh); +	c->hintsvalid = 1;  }  void | 
