diff options
| -rw-r--r-- | client.c | 20 | ||||
| -rw-r--r-- | event.c | 2 | 
2 files changed, 13 insertions, 9 deletions
@@ -81,7 +81,7 @@ void  focus(Client *c) {  	Client *old = sel; -	if(!issel || (c && !isvisible(c))) +	if(c && !isvisible(c))  		return;  	if(old && old != c) { @@ -89,14 +89,18 @@ focus(Client *c) {  		XSetWindowBorder(dpy, old->win, dc.norm[ColBorder]);  	}  	if(c) { -		detachstack(c); -		c->snext = stack; -		stack = c; -		grabbuttons(c, True); -		XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]); -		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); +		if(issel) { +			detachstack(c); +			c->snext = stack; +			stack = c; +			grabbuttons(c, True); +			XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]); +			XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); +		} +		else +			XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);  	} -	else +	else if(issel)  		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);  	sel = c;  	drawstatus(); @@ -269,8 +269,8 @@ leavenotify(XEvent *e) {  	XCrossingEvent *ev = &e->xcrossing;  	if((ev->window == root) && !ev->same_screen) { -		focus(NULL);  		issel = False; +		focus(sel);  	}  }  |