diff options
| author | Anselm R. Garbe <arg@suckless.org> | 2007-01-22 10:35:58 +0100 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@suckless.org> | 2007-01-22 10:35:58 +0100 | 
| commit | fcd98308ba65c8872b485ac7f1800841b0a29e5c (patch) | |
| tree | 5a3edcf206d73c9135d3839d0c47b02a91c7d2db | |
| parent | b233089815367983e07939b2aabb999fdc359f91 (diff) | |
this variant is known to work, but focus() is ugly - we need in general a better way to handle multihead, this issel-stuff looks awkward (maybe it might be a good idea to set sel to NULL but to introduce a Client *revert which is set if a screen is unfocused, have to think about it further).
| -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);  	}  } | 
