merged tile.c again into dwm.c
This commit is contained in:
		
							parent
							
								
									6bdef73a4f
								
							
						
					
					
						commit
						822101dd5b
					
				| @ -25,12 +25,10 @@ Rule rules[] = { | ||||
| double mfact           = 0.55; | ||||
| Bool resizehints       = True;     /* False means respect size hints in tiled resizals */ | ||||
| 
 | ||||
| #include "tile.c" | ||||
| 
 | ||||
| Layout layouts[] = { | ||||
| 	/* symbol     arrange  geom */ | ||||
| 	{ "[]=",      tile,    updatetilegeom }, /* first entry is default */ | ||||
| 	{ "><>",      NULL,                   }, /* no layout function means floating behavior */ | ||||
| 	{ "><>",      NULL,    NULL           }, /* no layout function means floating behavior */ | ||||
| }; | ||||
| 
 | ||||
| /* key definitions */ | ||||
|  | ||||
							
								
								
									
										101
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								dwm.c
									
									
									
									
									
								
							| @ -53,7 +53,6 @@ | ||||
| #define MOUSEMASK       (BUTTONMASK|PointerMotionMask) | ||||
| 
 | ||||
| /* enums */ | ||||
| enum { BarTop, BarBot, BarOff, BarLast };               /* bar appearance */ | ||||
| enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | ||||
| enum { ColBorder, ColFG, ColBG, ColLast };              /* color */ | ||||
| enum { NetSupported, NetWMName, NetLast };              /* EWMH atoms */ | ||||
| @ -165,11 +164,14 @@ void restack(void); | ||||
| void run(void); | ||||
| void scan(void); | ||||
| void setclientstate(Client *c, long state); | ||||
| void setmfact(const char *arg); | ||||
| void setup(void); | ||||
| void spawn(const char *arg); | ||||
| void tag(const char *arg); | ||||
| unsigned int textnw(const char *text, unsigned int len); | ||||
| unsigned int textw(const char *text); | ||||
| void tile(void); | ||||
| void tileresize(Client *c, int x, int y, int w, int h); | ||||
| void togglebar(const char *arg); | ||||
| void togglefloating(const char *arg); | ||||
| void togglelayout(const char *arg); | ||||
| @ -181,6 +183,7 @@ void unmapnotify(XEvent *e); | ||||
| void updatebar(void); | ||||
| void updategeom(void); | ||||
| void updatesizehints(Client *c); | ||||
| void updatetilegeom(void); | ||||
| void updatetitle(Client *c); | ||||
| void updatewmhints(Client *c); | ||||
| void view(const char *arg); | ||||
| @ -194,6 +197,7 @@ void zoom(const char *arg); | ||||
| char stext[256]; | ||||
| int screen, sx, sy, sw, sh; | ||||
| int bx, by, bw, bh, blw, wx, wy, ww, wh; | ||||
| int mx, my, mw, mh, tx, ty, tw, th; | ||||
| int seltags = 0; | ||||
| int (*xerrorxlib)(Display *, XErrorEvent *); | ||||
| unsigned int numlockmask = 0; | ||||
| @ -1332,6 +1336,24 @@ setclientstate(Client *c, long state) { | ||||
| 			PropModeReplace, (unsigned char *)data, 2); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| setmfact(const char *arg) { | ||||
| 	double d; | ||||
| 
 | ||||
| 	if(!arg || lt->arrange != tile) | ||||
| 		return; | ||||
| 	else { | ||||
| 		d = strtod(arg, NULL); | ||||
| 		if(arg[0] == '-' || arg[0] == '+') | ||||
| 			d += mfact; | ||||
| 		if(d < 0.1 || d > 0.9) | ||||
| 			return; | ||||
| 		mfact = d; | ||||
| 	} | ||||
| 	updatetilegeom(); | ||||
| 	arrange(); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| setup(void) { | ||||
| 	unsigned int i, w; | ||||
| @ -1466,6 +1488,53 @@ textw(const char *text) { | ||||
| 	return textnw(text, strlen(text)) + dc.font.height; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tile(void) { | ||||
| 	int x, y, h, w; | ||||
| 	unsigned int i, n; | ||||
| 	Client *c; | ||||
| 
 | ||||
| 	for(n = 0, c = nextunfloating(clients); c; c = nextunfloating(c->next), n++); | ||||
| 	if(n == 0) | ||||
| 		return; | ||||
| 
 | ||||
| 	/* master */ | ||||
| 	c = nextunfloating(clients); | ||||
| 
 | ||||
| 	if(n == 1) | ||||
| 		tileresize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw); | ||||
| 	else | ||||
| 		tileresize(c, mx, my, mw - 2 * c->bw, mh - 2 * c->bw); | ||||
| 
 | ||||
| 	if(--n == 0) | ||||
| 		return; | ||||
| 
 | ||||
| 	/* tile stack */ | ||||
| 	x = (tx > c->x + c->w) ? c->x + c->w + 2 * c->bw : tw; | ||||
| 	y = ty; | ||||
| 	w = (tx > c->x + c->w) ? wx + ww - x : tw; | ||||
| 	h = th / n; | ||||
| 	if(h < bh) | ||||
| 		h = th; | ||||
| 
 | ||||
| 	for(i = 0, c = nextunfloating(c->next); c; c = nextunfloating(c->next), i++) { | ||||
| 		if(i + 1 == n) /* remainder */ | ||||
| 			tileresize(c, x, y, w - 2 * c->bw, (ty + th) - y - 2 * c->bw); | ||||
| 		else | ||||
| 			tileresize(c, x, y, w - 2 * c->bw, h - 2 * c->bw); | ||||
| 		if(h != th) | ||||
| 			y = c->y + c->h + 2 * c->bw; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tileresize(Client *c, int x, int y, int w, int h) { | ||||
| 	resize(c, x, y, w, h, resizehints); | ||||
| 	if(resizehints && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) | ||||
| 		/* client doesn't accept size constraints */ | ||||
| 		resize(c, x, y, w, h, False); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| togglebar(const char *arg) { | ||||
| 	showbar = !showbar; | ||||
| @ -1667,6 +1736,21 @@ updatesizehints(Client *c) { | ||||
| 			&& c->maxw == c->minw && c->maxh == c->minh); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| updatetilegeom(void) { | ||||
| 	/* master area geometry */ | ||||
| 	mx = wx; | ||||
| 	my = wy; | ||||
| 	mw = mfact * ww; | ||||
| 	mh = wh; | ||||
| 
 | ||||
| 	/* tile area geometry */ | ||||
| 	tx = mx + mw; | ||||
| 	ty = wy; | ||||
| 	tw = ww - mw; | ||||
| 	th = wh; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| updatetitle(Client *c) { | ||||
| 	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) | ||||
| @ -1733,6 +1817,21 @@ xerrorstart(Display *dpy, XErrorEvent *ee) { | ||||
| 	return -1; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| zoom(const char *arg) { | ||||
| 	Client *c = sel; | ||||
| 
 | ||||
| 	if(c == nextunfloating(clients)) | ||||
| 		if(!c || !(c = nextunfloating(c->next))) | ||||
| 			return; | ||||
| 	if(lt->arrange == tile && !sel->isfloating) { | ||||
| 		detach(c); | ||||
| 		attach(c); | ||||
| 		focus(c); | ||||
| 	} | ||||
| 	arrange(); | ||||
| } | ||||
| 
 | ||||
| int | ||||
| main(int argc, char *argv[]) { | ||||
| 	if(argc == 2 && !strcmp("-v", argv[1])) | ||||
|  | ||||
							
								
								
									
										102
									
								
								tile.c
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								tile.c
									
									
									
									
									
								
							| @ -1,102 +0,0 @@ | ||||
| /* See LICENSE file for copyright and license details. */ | ||||
| int bx, by, bw, bh, blw, mx, my, mw, mh, tx, ty, tw, th, wx, wy, ww, wh; | ||||
| 
 | ||||
| void setmfact(const char *arg); | ||||
| void tile(void); | ||||
| void tileresize(Client *c, int x, int y, int w, int h); | ||||
| void updatetilegeom(void); | ||||
| 
 | ||||
| void | ||||
| setmfact(const char *arg) { | ||||
| 	double d; | ||||
| 
 | ||||
| 	if(!arg || lt->arrange != tile) | ||||
| 		return; | ||||
| 	else { | ||||
| 		d = strtod(arg, NULL); | ||||
| 		if(arg[0] == '-' || arg[0] == '+') | ||||
| 			d += mfact; | ||||
| 		if(d < 0.1 || d > 0.9) | ||||
| 			return; | ||||
| 		mfact = d; | ||||
| 	} | ||||
| 	updatetilegeom(); | ||||
| 	arrange(); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tile(void) { | ||||
| 	int x, y, h, w; | ||||
| 	unsigned int i, n; | ||||
| 	Client *c; | ||||
| 
 | ||||
| 	for(n = 0, c = nextunfloating(clients); c; c = nextunfloating(c->next), n++); | ||||
| 	if(n == 0) | ||||
| 		return; | ||||
| 
 | ||||
| 	/* master */ | ||||
| 	c = nextunfloating(clients); | ||||
| 
 | ||||
| 	if(n == 1) | ||||
| 		tileresize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw); | ||||
| 	else | ||||
| 		tileresize(c, mx, my, mw - 2 * c->bw, mh - 2 * c->bw); | ||||
| 
 | ||||
| 	if(--n == 0) | ||||
| 		return; | ||||
| 
 | ||||
| 	/* tile stack */ | ||||
| 	x = (tx > c->x + c->w) ? c->x + c->w + 2 * c->bw : tw; | ||||
| 	y = ty; | ||||
| 	w = (tx > c->x + c->w) ? wx + ww - x : tw; | ||||
| 	h = th / n; | ||||
| 	if(h < bh) | ||||
| 		h = th; | ||||
| 
 | ||||
| 	for(i = 0, c = nextunfloating(c->next); c; c = nextunfloating(c->next), i++) { | ||||
| 		if(i + 1 == n) /* remainder */ | ||||
| 			tileresize(c, x, y, w - 2 * c->bw, (ty + th) - y - 2 * c->bw); | ||||
| 		else | ||||
| 			tileresize(c, x, y, w - 2 * c->bw, h - 2 * c->bw); | ||||
| 		if(h != th) | ||||
| 			y = c->y + c->h + 2 * c->bw; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tileresize(Client *c, int x, int y, int w, int h) { | ||||
| 	resize(c, x, y, w, h, resizehints); | ||||
| 	if(resizehints && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) | ||||
| 		/* client doesn't accept size constraints */ | ||||
| 		resize(c, x, y, w, h, False); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| zoom(const char *arg) { | ||||
| 	Client *c = sel; | ||||
| 
 | ||||
| 	if(c == nextunfloating(clients)) | ||||
| 		if(!c || !(c = nextunfloating(c->next))) | ||||
| 			return; | ||||
| 	if(lt->arrange == tile && !sel->isfloating) { | ||||
| 		detach(c); | ||||
| 		attach(c); | ||||
| 		focus(c); | ||||
| 	} | ||||
| 	arrange(); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| updatetilegeom(void) { | ||||
| 	/* master area geometry */ | ||||
| 	mx = wx; | ||||
| 	my = wy; | ||||
| 	mw = mfact * ww; | ||||
| 	mh = wh; | ||||
| 
 | ||||
| 	/* tile area geometry */ | ||||
| 	tx = mx + mw; | ||||
| 	ty = wy; | ||||
| 	tw = ww - mw; | ||||
| 	th = wh; | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user