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; | double mfact           = 0.55; | ||||||
| Bool resizehints       = True;     /* False means respect size hints in tiled resizals */ | Bool resizehints       = True;     /* False means respect size hints in tiled resizals */ | ||||||
| 
 | 
 | ||||||
| #include "tile.c" |  | ||||||
| 
 |  | ||||||
| Layout layouts[] = { | Layout layouts[] = { | ||||||
| 	/* symbol     arrange  geom */ | 	/* symbol     arrange  geom */ | ||||||
| 	{ "[]=",      tile,    updatetilegeom }, /* first entry is default */ | 	{ "[]=",      tile,    updatetilegeom }, /* first entry is default */ | ||||||
| 	{ "><>",      NULL,                   }, /* no layout function means floating behavior */ | 	{ "><>",      NULL,    NULL           }, /* no layout function means floating behavior */ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* key definitions */ | /* key definitions */ | ||||||
|  | |||||||
							
								
								
									
										101
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								dwm.c
									
									
									
									
									
								
							| @ -53,7 +53,6 @@ | |||||||
| #define MOUSEMASK       (BUTTONMASK|PointerMotionMask) | #define MOUSEMASK       (BUTTONMASK|PointerMotionMask) | ||||||
| 
 | 
 | ||||||
| /* enums */ | /* enums */ | ||||||
| enum { BarTop, BarBot, BarOff, BarLast };               /* bar appearance */ |  | ||||||
| enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | ||||||
| enum { ColBorder, ColFG, ColBG, ColLast };              /* color */ | enum { ColBorder, ColFG, ColBG, ColLast };              /* color */ | ||||||
| enum { NetSupported, NetWMName, NetLast };              /* EWMH atoms */ | enum { NetSupported, NetWMName, NetLast };              /* EWMH atoms */ | ||||||
| @ -165,11 +164,14 @@ void restack(void); | |||||||
| void run(void); | void run(void); | ||||||
| void scan(void); | void scan(void); | ||||||
| void setclientstate(Client *c, long state); | void setclientstate(Client *c, long state); | ||||||
|  | void setmfact(const char *arg); | ||||||
| void setup(void); | void setup(void); | ||||||
| void spawn(const char *arg); | void spawn(const char *arg); | ||||||
| void tag(const char *arg); | void tag(const char *arg); | ||||||
| unsigned int textnw(const char *text, unsigned int len); | unsigned int textnw(const char *text, unsigned int len); | ||||||
| unsigned int textw(const char *text); | 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 togglebar(const char *arg); | ||||||
| void togglefloating(const char *arg); | void togglefloating(const char *arg); | ||||||
| void togglelayout(const char *arg); | void togglelayout(const char *arg); | ||||||
| @ -181,6 +183,7 @@ void unmapnotify(XEvent *e); | |||||||
| void updatebar(void); | void updatebar(void); | ||||||
| void updategeom(void); | void updategeom(void); | ||||||
| void updatesizehints(Client *c); | void updatesizehints(Client *c); | ||||||
|  | void updatetilegeom(void); | ||||||
| void updatetitle(Client *c); | void updatetitle(Client *c); | ||||||
| void updatewmhints(Client *c); | void updatewmhints(Client *c); | ||||||
| void view(const char *arg); | void view(const char *arg); | ||||||
| @ -194,6 +197,7 @@ void zoom(const char *arg); | |||||||
| char stext[256]; | char stext[256]; | ||||||
| int screen, sx, sy, sw, sh; | int screen, sx, sy, sw, sh; | ||||||
| int bx, by, bw, bh, blw, wx, wy, ww, wh; | int bx, by, bw, bh, blw, wx, wy, ww, wh; | ||||||
|  | int mx, my, mw, mh, tx, ty, tw, th; | ||||||
| int seltags = 0; | int seltags = 0; | ||||||
| int (*xerrorxlib)(Display *, XErrorEvent *); | int (*xerrorxlib)(Display *, XErrorEvent *); | ||||||
| unsigned int numlockmask = 0; | unsigned int numlockmask = 0; | ||||||
| @ -1332,6 +1336,24 @@ setclientstate(Client *c, long state) { | |||||||
| 			PropModeReplace, (unsigned char *)data, 2); | 			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 | void | ||||||
| setup(void) { | setup(void) { | ||||||
| 	unsigned int i, w; | 	unsigned int i, w; | ||||||
| @ -1466,6 +1488,53 @@ textw(const char *text) { | |||||||
| 	return textnw(text, strlen(text)) + dc.font.height; | 	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 | void | ||||||
| togglebar(const char *arg) { | togglebar(const char *arg) { | ||||||
| 	showbar = !showbar; | 	showbar = !showbar; | ||||||
| @ -1667,6 +1736,21 @@ updatesizehints(Client *c) { | |||||||
| 			&& c->maxw == c->minw && c->maxh == c->minh); | 			&& 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 | void | ||||||
| updatetitle(Client *c) { | updatetitle(Client *c) { | ||||||
| 	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) | 	if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) | ||||||
| @ -1733,6 +1817,21 @@ xerrorstart(Display *dpy, XErrorEvent *ee) { | |||||||
| 	return -1; | 	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 | int | ||||||
| main(int argc, char *argv[]) { | main(int argc, char *argv[]) { | ||||||
| 	if(argc == 2 && !strcmp("-v", argv[1])) | 	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