small change to achieve Jukka's last proposal
This commit is contained in:
		
							
								
								
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							| @@ -77,12 +77,13 @@ struct Client { | ||||
| 	char name[256]; | ||||
| 	int proto; | ||||
| 	int x, y, w, h; | ||||
| 	int rx, ry, rw, rh; /* revert geometry */ | ||||
| 	int tx, ty, tw, th; /* title window geometry */ | ||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||
| 	int grav; | ||||
| 	long flags;  | ||||
| 	unsigned int border, weight; | ||||
| 	Bool isfloat; | ||||
| 	Bool isfloat, ismax; | ||||
| 	Bool *tags; | ||||
| 	Client *next; | ||||
| 	Client *prev; | ||||
|   | ||||
							
								
								
									
										45
									
								
								view.c
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								view.c
									
									
									
									
									
								
							| @@ -18,6 +18,12 @@ minclient() { | ||||
| 	return min; | ||||
| } | ||||
|  | ||||
| static Client * | ||||
| nexttiled(Client *c) { | ||||
| 	for(c = getnext(c); c && c->isfloat; c = getnext(c->next)); | ||||
| 	return c; | ||||
| } | ||||
|  | ||||
| static void | ||||
| reorder() { | ||||
| 	Client *c, *newclients, *tail; | ||||
| @@ -36,10 +42,23 @@ reorder() { | ||||
| 	clients = newclients; | ||||
| } | ||||
|  | ||||
| static Client * | ||||
| nexttiled(Client *c) { | ||||
| 	for(c = getnext(c); c && c->isfloat; c = getnext(c->next)); | ||||
| 	return c; | ||||
| static void | ||||
| togglemax(Client *c) | ||||
| { | ||||
| 	if((c->ismax = !c->ismax)) { | ||||
| 		c->rx = c->x; c->x = sx; | ||||
| 		c->ry = c->y; c->y = bh; | ||||
| 		c->rw = c->w; c->w = sw; | ||||
| 		c->rh = c->h; c->h = sh; | ||||
| 	} | ||||
| 	else { | ||||
| 		c->x = c->rx; | ||||
| 		c->y = c->ry; | ||||
| 		c->w = c->w; | ||||
| 		c->h = c->h; | ||||
| 	} | ||||
| 	resize(c, True, TopLeft); | ||||
| 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | ||||
| } | ||||
|  | ||||
| /* extern */ | ||||
| @@ -82,8 +101,14 @@ dotile(Arg *arg) { | ||||
|  | ||||
| 	w = sw - mw; | ||||
| 	for(n = 0, c = clients; c; c = c->next) | ||||
| 		if(isvisible(c) && !c->isfloat) | ||||
| 			n++; | ||||
| 		if(isvisible(c)) { | ||||
| 			if(c->isfloat) { | ||||
| 				if(c->ismax) | ||||
| 					togglemax(c); | ||||
| 			} | ||||
| 			else | ||||
| 				n++; | ||||
| 		} | ||||
|  | ||||
| 	if(n > 1) | ||||
| 		h = (sh - bh) / (n - 1); | ||||
| @@ -269,7 +294,6 @@ viewall(Arg *arg) { | ||||
|  | ||||
| void | ||||
| zoom(Arg *arg) { | ||||
| 	int tmp; | ||||
| 	unsigned int n; | ||||
| 	Client *c; | ||||
| 	XEvent ev; | ||||
| @@ -278,12 +302,7 @@ zoom(Arg *arg) { | ||||
| 		return; | ||||
|  | ||||
| 	if(sel->isfloat || (arrange == dofloat)) { | ||||
| 		sel->x = sx; | ||||
| 		sel->y = bh; | ||||
| 		sel->w = sw; | ||||
| 		sel->h = sh - bh; | ||||
| 		resize(sel, True, TopLeft); | ||||
| 		while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | ||||
| 		togglemax(sel); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user