some polishing in tileh/tilev
This commit is contained in:
		
							parent
							
								
									69439715c0
								
							
						
					
					
						commit
						831428b00c
					
				
							
								
								
									
										128
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								dwm.c
									
									
									
									
									
								
							@ -117,6 +117,7 @@ void cleanup(void);
 | 
			
		||||
void configure(Client *c);
 | 
			
		||||
void configurenotify(XEvent *e);
 | 
			
		||||
void configurerequest(XEvent *e);
 | 
			
		||||
unsigned int counttiled(void);
 | 
			
		||||
void destroynotify(XEvent *e);
 | 
			
		||||
void detach(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);
 | 
			
		||||
void tileh(void);
 | 
			
		||||
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 tilevstack(unsigned int n);
 | 
			
		||||
void togglefloating(const char *arg);
 | 
			
		||||
@ -458,6 +460,15 @@ configurerequest(XEvent *e) {
 | 
			
		||||
	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
 | 
			
		||||
destroynotify(XEvent *e) {
 | 
			
		||||
	Client *c;
 | 
			
		||||
@ -1578,6 +1589,44 @@ textw(const char *text) {
 | 
			
		||||
	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
 | 
			
		||||
tileresize(Client *c, int x, int y, int w, int h) {
 | 
			
		||||
	resize(c, x, y, w, h, RESIZEHINTS);
 | 
			
		||||
@ -1587,63 +1636,15 @@ tileresize(Client *c, int x, int y, int w, int h) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tileh(void) {
 | 
			
		||||
	tilehstack(tilemaster());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tilehstack(unsigned int n) {
 | 
			
		||||
	int i, x, w;
 | 
			
		||||
tilev(void) {
 | 
			
		||||
	int y, h;
 | 
			
		||||
	unsigned int i, n = counttiled();
 | 
			
		||||
	Client *c;
 | 
			
		||||
 | 
			
		||||
	if(n == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	x = tx;
 | 
			
		||||
	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)
 | 
			
		||||
	c = tilemaster(n);
 | 
			
		||||
	if(--n == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	y = ty;
 | 
			
		||||
@ -1651,17 +1652,14 @@ tilevstack(unsigned int n) {
 | 
			
		||||
	if(h < bh)
 | 
			
		||||
		h = th;
 | 
			
		||||
 | 
			
		||||
	for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++)
 | 
			
		||||
		if(i > 0) {
 | 
			
		||||
			if(i > 1 && i == n) /* remainder */
 | 
			
		||||
				tileresize(c, tx, y, tw - 2 * c->border,
 | 
			
		||||
				              (ty + th) - y - 2 * c->border);
 | 
			
		||||
			else
 | 
			
		||||
				tileresize(c, tx, y, tw - 2 * c->border,
 | 
			
		||||
				              h - 2 * c->border);
 | 
			
		||||
			if(h != th)
 | 
			
		||||
				y = c->y + c->h + 2 * c->border;
 | 
			
		||||
		}
 | 
			
		||||
	for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) {
 | 
			
		||||
		if(i + 1 == n) /* remainder */
 | 
			
		||||
			tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y - 2 * c->border);
 | 
			
		||||
		else
 | 
			
		||||
			tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->border);
 | 
			
		||||
		if(h != th)
 | 
			
		||||
			y = c->y + c->h + 2 * c->border;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user