diff options
| author | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-13 20:28:19 +0200 | 
|---|---|---|
| committer | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-13 20:28:19 +0200 | 
| commit | 7fe717c29f9dafc4fc38313adbbb7c85619dec69 (patch) | |
| tree | bee9de83c270e21195f79ca86430f305cdd28fec | |
| parent | 3aad92202d58208c4197857d3f17c535ba0bd56a (diff) | |
fixed several things, nearly feature complete
| -rw-r--r-- | TODO | 1 | ||||
| -rw-r--r-- | client.c | 55 | ||||
| -rw-r--r-- | dev.c | 4 | ||||
| -rw-r--r-- | dwm.h | 2 | ||||
| -rw-r--r-- | main.c | 2 | 
5 files changed, 35 insertions, 29 deletions
| @@ -0,0 +1 @@ +- improve mouse based resizals with quadrant approach (then I think we have feature completeness already) @@ -52,7 +52,7 @@ max(Arg *arg)  	sel->w = sw - 2 * sel->border;  	sel->h = sh - 2 * sel->border;  	craise(sel); -	resize(sel); +	resize(sel, False);  	discard_events(EnterWindowMask);  } @@ -100,7 +100,7 @@ floating(Arg *arg)  	arrange = floating;  	for(c = clients; c; c = c->next) {  		if(c->tags[tsel]) -			resize(c); +			resize(c, True);  		else  			ban_client(c);  	} @@ -125,29 +125,29 @@ tiling(Arg *arg)  		if(c->tags[tsel])  			n++; -	h = (n > 2) ? sh / (n - 2) : sh; +	h = (n > 1) ? sh / (n - 1) : sh;  	for(i = 0, c = clients; c; c = c->next) {  		if(c->tags[tsel]) {  			if(n == 1) {  				c->x = sx;  				c->y = sy; -				c->w = sw; -				c->h = sh; +				c->w = sw - 2 * c->border; +				c->h = sh - 2 * c->border;  			} -			else if(i == 1) { +			else if(i == 0) {  				c->x = sx;  				c->y = sy; -				c->w = mw; -				c->h = sh; +				c->w = mw - 2 * c->border; +				c->h = sh - 2 * c->border;  			}  			else {  				c->x = sx + mw; -				c->y = sy + (i - 2) * h; -				c->w = w; -				c->h = h; +				c->y = sy + (i - 1) * h; +				c->w = w - 2 * c->border; +				c->h = h - 2 * c->border;  			} -			resize(c); +			resize(c, False);  			i++;  		}  		else @@ -304,14 +304,11 @@ lower(Client *c)  void  focus(Client *c)  { -	if(sel && sel != c) { -		XSetWindowBorder(dpy, sel->win, dc.bg); -		XMapWindow(dpy, sel->title); -		draw_client(sel); -	} +	Client *old = sel; +  	sel = c; -	XUnmapWindow(dpy, c->title); -	XSetWindowBorder(dpy, c->win, dc.fg); +	if(old && old != c) +		draw_client(old);  	draw_client(c);  	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);  	XFlush(dpy); @@ -463,14 +460,16 @@ gravitate(Client *c, Bool invert)  void -resize(Client *c) +resize(Client *c, Bool inc)  {  	XConfigureEvent e; -	if(c->incw) -		c->w -= (c->w - c->basew) % c->incw; -	if(c->inch) -		c->h -= (c->h - c->baseh) % c->inch; +	if(inc) { +		if(c->incw) +			c->w -= (c->w - c->basew) % c->incw; +		if(c->inch) +			c->h -= (c->h - c->baseh) % c->inch; +	}  	if(c->minw && c->w < c->minw)  		c->w = c->minw;  	if(c->minh && c->h < c->minh) @@ -554,8 +553,14 @@ void  draw_client(Client *c)  {  	int i; -	if(c == sel) +	if(c == sel) { +		XUnmapWindow(dpy, c->title); +		XSetWindowBorder(dpy, c->win, dc.fg);  		return; +	} + +	XSetWindowBorder(dpy, c->win, dc.bg); +	XMapWindow(dpy, c->title);  	dc.x = dc.y = 0;  	dc.h = c->th; @@ -104,7 +104,7 @@ mresize(Client *c)  			c->h = abs(ocy - ev.xmotion.y);  			c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;  			c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h; -			resize(c); +			resize(c, True);  			break;  		case ButtonRelease:  			XUngrabPointer(dpy, CurrentTime); @@ -138,7 +138,7 @@ mmove(Client *c)  			XFlush(dpy);  			c->x = ocx + (ev.xmotion.x - x1);  			c->y = ocy + (ev.xmotion.y - y1); -			resize(c); +			resize(c, False);  			break;  		case ButtonRelease:  			XUngrabPointer(dpy, CurrentTime); @@ -106,7 +106,7 @@ extern Client *getclient(Window w);  extern void focus(Client *c);  extern void update_name(Client *c);  extern void draw_client(Client *c); -extern void resize(Client *c); +extern void resize(Client *c, Bool inc);  extern void update_size(Client *c);  extern Client *gettitle(Window w);  extern void craise(Client *c); @@ -168,7 +168,7 @@ static void  cleanup()  {  	while(sel) { -		resize(sel); +		resize(sel, True);  		unmanage(sel);  	}  	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | 
