aewl

diff view.c @ 400:052657ff2e7b

applied Sanders max_and_focus.patch
author Anselm R. Garbe <arg@10kloc.org>
date Mon, 04 Sep 2006 08:55:49 +0200
parents cb8a231610c7
children 1eb2eb405653
line diff
     1.1 --- a/view.c	Fri Sep 01 15:31:59 2006 +0200
     1.2 +++ b/view.c	Mon Sep 04 08:55:49 2006 +0200
     1.3 @@ -57,22 +57,20 @@
     1.4  void
     1.5  dofloat(Arg *arg)
     1.6  {
     1.7 -	Client *c;
     1.8 +	Client *c, *fc;
     1.9 +
    1.10 +	maximized = False;
    1.11  
    1.12  	for(c = clients; c; c = c->next) {
    1.13 -		c->ismax = False;
    1.14  		if(isvisible(c)) {
    1.15  			resize(c, True, TopLeft);
    1.16  		}
    1.17  		else
    1.18  			ban(c);
    1.19  	}
    1.20 -	if(!sel || !isvisible(sel))
    1.21 -		sel = getnext(clients);
    1.22 -	if(sel)
    1.23 -		focus(sel);
    1.24 -	else
    1.25 -		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    1.26 +	if(!(fc = sel) || !isvisible(fc))
    1.27 +		fc = getnext(clients);
    1.28 +	focus(fc);
    1.29  	restack();
    1.30  }
    1.31  
    1.32 @@ -80,7 +78,9 @@
    1.33  dotile(Arg *arg)
    1.34  {
    1.35  	int h, i, n, w;
    1.36 -	Client *c;
    1.37 +	Client *c, *fc;
    1.38 +
    1.39 +	maximized = False;
    1.40  
    1.41  	w = sw - mw;
    1.42  	for(n = 0, c = clients; c; c = c->next)
    1.43 @@ -93,7 +93,6 @@
    1.44  		h = sh - bh;
    1.45  
    1.46  	for(i = 0, c = clients; c; c = c->next) {
    1.47 -		c->ismax = False;
    1.48  		if(isvisible(c)) {
    1.49  			if(c->isfloat) {
    1.50  				resize(c, True, TopLeft);
    1.51 @@ -132,12 +131,9 @@
    1.52  		else
    1.53  			ban(c);
    1.54  	}
    1.55 -	if(!sel || !isvisible(sel))
    1.56 -		sel = getnext(clients);
    1.57 -	if(sel)
    1.58 -		focus(sel);
    1.59 -	else
    1.60 -		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    1.61 +	if(!(fc = sel) || !isvisible(fc))
    1.62 +		fc = getnext(clients);
    1.63 +	focus(fc);
    1.64  	restack();
    1.65  }
    1.66  
    1.67 @@ -289,7 +285,7 @@
    1.68  {
    1.69  	Client *c = sel;
    1.70  
    1.71 -	if(!c || (arrange != dotile) || c->isfloat || c->ismax)
    1.72 +	if(!c || (arrange != dotile) || c->isfloat || maximized)
    1.73  		return;
    1.74  
    1.75  	if(c == getnext(clients))