X-Git-Url: https://git.xinqibao.xyz/dwm.git/blobdiff_plain/346bdea946887d83f857a8944a0189bca51a3e47..97ced11e531f4e51d7ee248ae654a2b04daaad1c:/view.c

diff --git a/view.c b/view.c
index 5667134..e799094 100644
--- a/view.c
+++ b/view.c
@@ -7,7 +7,7 @@
 /* static */
 
 static Client *
-minclient() {
+minclient(void) {
 	Client *c, *min;
 
 	if((clients && clients->isfloat) || arrange == dofloat)
@@ -25,7 +25,7 @@ nexttiled(Client *c) {
 }
 
 static void
-reorder() {
+reorder(void) {
 	Client *c, *newclients, *tail;
 
 	newclients = tail = NULL;
@@ -45,17 +45,18 @@ reorder() {
 static void
 togglemax(Client *c)
 {
+	XEvent ev;
 	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;
+		c->rh = c->h; c->h = sh - bh - 2;
 	}
 	else {
 		c->x = c->rx;
 		c->y = c->ry;
-		c->w = c->w;
-		c->h = c->h;
+		c->w = c->rw;
+		c->h = c->rh;
 	}
 	resize(c, True, TopLeft);
 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
@@ -100,15 +101,8 @@ dotile(Arg *arg) {
 	Client *c;
 
 	w = sw - mw;
-	for(n = 0, c = clients; c; c = c->next)
-		if(isvisible(c)) {
-			if(c->isfloat) {
-				if(c->ismax)
-					togglemax(c);
-			}
-			else
-				n++;
-		}
+	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
+		n++;
 
 	if(n > 1)
 		h = (sh - bh) / (n - 1);
@@ -121,6 +115,7 @@ dotile(Arg *arg) {
 				resize(c, True, TopLeft);
 				continue;
 			}
+			c->ismax = False;
 			if(n == 1) {
 				c->x = sx;
 				c->y = sy + bh;
@@ -211,7 +206,7 @@ resizecol(Arg *arg) {
 	for(n = 0, c = clients; c; c = c->next)
 		if(isvisible(c) && !c->isfloat)
 			n++;
-	if(!sel || sel->isfloat || n < 2 || (arrange != dotile))
+	if(!sel || sel->isfloat || n < 2 || (arrange == dofloat))
 		return;
 
 	if(sel == getnext(clients)) {
@@ -228,10 +223,10 @@ resizecol(Arg *arg) {
 }
 
 void
-restack() {
+restack(void) {
 	Client *c;
 	XEvent ev;
-	
+
 	if(!sel) {
 		drawstatus();
 		return;
@@ -296,7 +291,6 @@ void
 zoom(Arg *arg) {
 	unsigned int n;
 	Client *c;
-	XEvent ev;
 
 	if(!sel)
 		return;
@@ -309,7 +303,7 @@ zoom(Arg *arg) {
 	for(n = 0, c = clients; c; c = c->next)
 		if(isvisible(c) && !c->isfloat)
 			n++;
-	if(n < 2 || (arrange != dotile))
+	if(n < 2 || (arrange == dofloat))
 		return;
 
 	if((c = sel) == nexttiled(clients))