diff options
| author | anselm@anselm1 <unknown> | 2008-05-19 20:07:12 +0100 | 
|---|---|---|
| committer | anselm@anselm1 <unknown> | 2008-05-19 20:07:12 +0100 | 
| commit | 822101dd5bceadb12351dd5f9084d7745b10ec92 (patch) | |
| tree | c9ed3b1c3181b4be933c826834688fc510365393 | |
| parent | 6bdef73a4f0c2a96f8984ddc10b55f1d753ab5fe (diff) | |
| download | dwm-822101dd5bceadb12351dd5f9084d7745b10ec92.tar.gz | |
merged tile.c again into dwm.c
| -rw-r--r-- | config.def.h | 4 | ||||
| -rw-r--r-- | dwm.c | 101 | ||||
| -rw-r--r-- | tile.c | 102 | 
3 files changed, 101 insertions, 106 deletions
| diff --git a/config.def.h b/config.def.h index 0619a9e..63c8c06 100644 --- a/config.def.h +++ b/config.def.h @@ -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 */ @@ -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; @@ -1333,6 +1337,24 @@ setclientstate(Client *c, long state) {  }  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;  	XSetWindowAttributes wa; @@ -1467,6 +1489,53 @@ textw(const char *text) {  }  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;  	updategeom(); @@ -1668,6 +1737,21 @@ updatesizehints(Client *c) {  }  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))  		gettextprop(c->win, wmatom[WMName], 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])) @@ -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; -} | 
