some polishing in tileh/tilev
							parent
							
								
									69439715c0
								
							
						
					
					
						commit
						831428b00c
					
				
							
								
								
									
										128
									
								
								dwm.c
								
								
								
								
							
							
						
						
									
										128
									
								
								dwm.c
								
								
								
								
							|  | @ -117,6 +117,7 @@ void cleanup(void); | ||||||
| void configure(Client *c); | void configure(Client *c); | ||||||
| void configurenotify(XEvent *e); | void configurenotify(XEvent *e); | ||||||
| void configurerequest(XEvent *e); | void configurerequest(XEvent *e); | ||||||
|  | unsigned int counttiled(void); | ||||||
| void destroynotify(XEvent *e); | void destroynotify(XEvent *e); | ||||||
| void detach(Client *c); | void detach(Client *c); | ||||||
| void detachstack(Client *c); | void detachstack(Client *c); | ||||||
|  | @ -170,7 +171,8 @@ unsigned int textnw(const char *text, unsigned int len); | ||||||
| unsigned int textw(const char *text); | unsigned int textw(const char *text); | ||||||
| void tileh(void); | void tileh(void); | ||||||
| void tilehstack(unsigned int n); | void tilehstack(unsigned int n); | ||||||
| unsigned int tilemaster(void); | Client *tilemaster(unsigned int n); | ||||||
|  | void tileresize(Client *c, int x, int y, int w, int h); | ||||||
| void tilev(void); | void tilev(void); | ||||||
| void tilevstack(unsigned int n); | void tilevstack(unsigned int n); | ||||||
| void togglefloating(const char *arg); | void togglefloating(const char *arg); | ||||||
|  | @ -458,6 +460,15 @@ configurerequest(XEvent *e) { | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | unsigned int | ||||||
|  | counttiled(void) { | ||||||
|  | 	unsigned int n; | ||||||
|  | 	Client *c; | ||||||
|  | 
 | ||||||
|  | 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++); | ||||||
|  | 	return n; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| destroynotify(XEvent *e) { | destroynotify(XEvent *e) { | ||||||
| 	Client *c; | 	Client *c; | ||||||
|  | @ -1578,6 +1589,44 @@ textw(const char *text) { | ||||||
| 	return textnw(text, strlen(text)) + dc.font.height; | 	return textnw(text, strlen(text)) + dc.font.height; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | tileh(void) { | ||||||
|  | 	int x, w; | ||||||
|  | 	unsigned int i, n = counttiled(); | ||||||
|  | 	Client *c; | ||||||
|  | 
 | ||||||
|  | 	if(n == 0) | ||||||
|  | 		return; | ||||||
|  | 	c = tilemaster(n); | ||||||
|  | 	if(--n == 0) | ||||||
|  | 		return; | ||||||
|  | 
 | ||||||
|  | 	x = tx; | ||||||
|  | 	w = tw / n; | ||||||
|  | 	if(w < bh) | ||||||
|  | 		w = tw; | ||||||
|  | 
 | ||||||
|  | 	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | ||||||
|  | 		if(i + 1 == n) /* remainder */ | ||||||
|  | 			tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, th - 2 * c->border); | ||||||
|  | 		else | ||||||
|  | 			tileresize(c, x, ty, w - 2 * c->border, th - 2 * c->border); | ||||||
|  | 		if(w != tw) | ||||||
|  | 			x = c->x + c->w + 2 * c->border; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Client * | ||||||
|  | tilemaster(unsigned int n) { | ||||||
|  | 	Client *c = nexttiled(clients); | ||||||
|  | 
 | ||||||
|  | 	if(n == 1) | ||||||
|  | 		tileresize(c, mox, moy, mow - 2 * c->border, moh - 2 * c->border); | ||||||
|  | 	else | ||||||
|  | 		tileresize(c, mx, my, mw - 2 * c->border, mh - 2 * c->border); | ||||||
|  | 	return c; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| tileresize(Client *c, int x, int y, int w, int h) { | tileresize(Client *c, int x, int y, int w, int h) { | ||||||
| 	resize(c, x, y, w, h, RESIZEHINTS); | 	resize(c, x, y, w, h, RESIZEHINTS); | ||||||
|  | @ -1587,63 +1636,15 @@ tileresize(Client *c, int x, int y, int w, int h) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| tileh(void) { | tilev(void) { | ||||||
| 	tilehstack(tilemaster()); | 	int y, h; | ||||||
| } | 	unsigned int i, n = counttiled(); | ||||||
| 
 |  | ||||||
| void |  | ||||||
| tilehstack(unsigned int n) { |  | ||||||
| 	int i, x, w; |  | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 
 | 
 | ||||||
| 	if(n == 0) | 	if(n == 0) | ||||||
| 		return; | 		return; | ||||||
| 
 | 	c = tilemaster(n); | ||||||
| 	x = tx; | 	if(--n == 0) | ||||||
| 	w = tw / n; |  | ||||||
| 	if(w < bh) |  | ||||||
| 		w = tw; |  | ||||||
| 
 |  | ||||||
| 	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) |  | ||||||
| 		if(i > 0) { |  | ||||||
| 			if(i > 1 && i == n) /* remainder */ |  | ||||||
| 				tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, |  | ||||||
| 				              th - 2 * c->border); |  | ||||||
| 			else |  | ||||||
| 				tileresize(c, x, ty, w - 2 * c->border, |  | ||||||
| 				              th - 2 * c->border); |  | ||||||
| 			if(w != tw) |  | ||||||
| 				x = c->x + c->w + 2 * c->border; |  | ||||||
| 		} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| unsigned int |  | ||||||
| tilemaster(void) { |  | ||||||
| 	unsigned int n; |  | ||||||
| 	Client *c, *mc; |  | ||||||
| 
 |  | ||||||
| 	for(n = 0, mc = c = nexttiled(clients); c; c = nexttiled(c->next)) |  | ||||||
| 		n++; |  | ||||||
| 	if(n == 0) |  | ||||||
| 		return 0; |  | ||||||
| 	if(n == 1) |  | ||||||
| 		tileresize(mc, mox, moy, mow - 2 * mc->border, moh - 2 * mc->border); |  | ||||||
| 	else |  | ||||||
| 		tileresize(mc, mx, my, mw - 2 * mc->border, mh - 2 * mc->border); |  | ||||||
| 	return n - 1; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| tilev(void) { |  | ||||||
| 	tilevstack(tilemaster()); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| tilevstack(unsigned int n) { |  | ||||||
| 	int i, y, h; |  | ||||||
| 	Client *c; |  | ||||||
| 
 |  | ||||||
| 	if(n == 0) |  | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	y = ty; | 	y = ty; | ||||||
|  | @ -1651,17 +1652,14 @@ tilevstack(unsigned int n) { | ||||||
| 	if(h < bh) | 	if(h < bh) | ||||||
| 		h = th; | 		h = th; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) | 	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | ||||||
| 		if(i > 0) { | 		if(i + 1 == n) /* remainder */ | ||||||
| 			if(i > 1 && i == n) /* remainder */ | 			tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y - 2 * c->border); | ||||||
| 				tileresize(c, tx, y, tw - 2 * c->border, | 		else | ||||||
| 				              (ty + th) - y - 2 * c->border); | 			tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->border); | ||||||
| 			else | 		if(h != th) | ||||||
| 				tileresize(c, tx, y, tw - 2 * c->border, | 			y = c->y + c->h + 2 * c->border; | ||||||
| 				              h - 2 * c->border); | 	} | ||||||
| 			if(h != th) |  | ||||||
| 				y = c->y + c->h + 2 * c->border; |  | ||||||
| 		} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue