diff options
| author | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 15:05:29 +0100 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 15:05:29 +0100 | 
| commit | 238dd5d2b15b8bdc0f05d5be7f86a1ca03d2920b (patch) | |
| tree | 8f08ae0a2fe2a6e40aa0a263f6d19ada4291215b | |
| parent | 64871a7045077bb2ec4cbcd62a74cabbe6b45096 (diff) | |
renamed view.c into screen.c
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | client.c | 73 | ||||
| -rw-r--r-- | dwm.h | 10 | ||||
| -rw-r--r-- | screen.c (renamed from view.c) | 51 | 
4 files changed, 67 insertions, 69 deletions
| @@ -3,7 +3,7 @@  include config.mk -SRC = client.c draw.c event.c main.c manage.c util.c +SRC = client.c draw.c event.c main.c screen.c util.c  OBJ = ${SRC:.c=.o}  all: options dwm @@ -10,6 +10,19 @@  /* static */  static void +attachstack(Client *c) { +	c->snext = stack; +	stack = c; +} + +static void +detachstack(Client *c) { +	Client **tc; +	for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext); +	*tc = c->snext; +} + +static void  grabbuttons(Client *c, Bool focused) {  	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); @@ -68,6 +81,24 @@ setclientstate(Client *c, long state) {  			PropModeReplace, (unsigned char *)data, 2);  } +static void +togglemax(Client *c) { +	XEvent ev; + +	if(c->isfixed) +		return; +	if((c->ismax = !c->ismax)) { +		c->rx = c->x; +		c->ry = c->y; +		c->rw = c->w; +		c->rh = c->h; +		resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True); +	} +	else +		resize(c, c->rx, c->ry, c->rw, c->rh, True); +	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); +} +  static int  xerrordummy(Display *dsply, XErrorEvent *ee) {  	return 0; @@ -84,12 +115,6 @@ attach(Client *c) {  }  void -attachstack(Client *c) { -	c->snext = stack; -	stack = c; -} - -void  configure(Client *c) {  	XConfigureEvent ce; @@ -119,13 +144,6 @@ detach(Client *c) {  }  void -detachstack(Client *c) { -	Client **tc; -	for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext); -	*tc = c->snext; -} - -void  focus(Client *c) {  	if(c && !isvisible(c))  		return; @@ -256,6 +274,12 @@ manage(Window w, XWindowAttributes *wa) {  	arrange();  } +Client * +nexttiled(Client *c) { +	for(; c && (c->isfloat || !isvisible(c)); c = c->next); +	return c; +} +  void  resize(Client *c, int x, int y, int w, int h, Bool sizehints) {  	float actual, dx, dy, max, min; @@ -416,3 +440,26 @@ unmanage(Client *c) {  	XUngrabServer(dpy);  	arrange();  } + +void +zoom(Arg *arg) { +	unsigned int n; +	Client *c; + +	if(!sel) +		return; +	if(sel->isfloat || (arrange == dofloat)) { +		togglemax(sel); +		return; +	} +	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) +		n++; + +	if((c = sel) == nexttiled(clients)) +		if(!(c = nexttiled(c->next))) +			return; +	detach(c); +	attach(c); +	focus(c); +	arrange(); +} @@ -99,22 +99,20 @@ extern Display *dpy;  extern Window root, barwin;  /* client.c */ -extern void attach(Client *c);			/* attaches c to global client list */ -extern void attachstack(Client *c);		/* attaches client to stack */  extern void configure(Client *c);		/* send synthetic configure event */ -extern void detach(Client *c);			/* detaches c from global client list */ -extern void detachstack(Client *c);		/* detaches client from stack */  extern void focus(Client *c);			/* focus c, c may be NULL */  extern void focusnext(Arg *arg);		/* focuses next visible client, arg is ignored  */  extern void focusprev(Arg *arg);		/* focuses previous visible client, arg is ignored */  extern Client *getclient(Window w);		/* return client of w */  extern void killclient(Arg *arg);		/* kill c nicely */  extern void manage(Window w, XWindowAttributes *wa);	/* manage new client */ +Client *nexttiled(Client *c);			/* returns tiled successor of c */  extern void resize(Client *c, int x, int y,  		int w, int h, Bool sizehints);	/* resize c*/  extern void updatesizehints(Client *c);		/* update the size hint variables of c */  extern void updatetitle(Client *c);		/* update the name of c */  extern void unmanage(Client *c);		/* destroy c */ +extern void zoom(Arg *arg);			/* zooms the focused client to master area, arg is ignored */  /* draw.c */  extern void drawstatus(void);			/* draw the bar */ @@ -131,7 +129,7 @@ extern void quit(Arg *arg);			/* quit dwm nicely */  extern void sendevent(Window w, Atom a, long value);	/* send synthetic event to w */  extern int xerror(Display *dsply, XErrorEvent *ee);	/* dwm's X error handler */ -/* manage.c */ +/* screen.c */  extern void compileregexps(void);		/* initialize regexps of rules defined in config.h */  extern void dofloat(void);			/* arranges all windows floating */  extern void dotile(void);			/* arranges all windows tiled */ @@ -146,9 +144,9 @@ extern void togglemode(Arg *arg);		/* toggles global arrange function (dotile/do  extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */  extern void toggleview(Arg *arg);		/* toggles the tag with arg's index (in)visible */  extern void view(Arg *arg);			/* views the tag with arg's index */ -extern void zoom(Arg *arg);			/* zooms the focused client to master area, arg is ignored */  /* util.c */  extern void *emallocz(unsigned int size);	/* allocates zero-initialized memory, exits on error */  extern void eprint(const char *errstr, ...);	/* prints errstr and exits with 1 */  extern void spawn(Arg *arg);			/* forks a new subprocess with to arg's cmd */ + @@ -32,30 +32,6 @@ RULES  static Regexps *regexps = NULL;  static unsigned int len = 0; -static Client * -nextmanaged(Client *c) { -	for(; c && (c->isfloat || !isvisible(c)); c = c->next); -	return c; -} - -static void -togglemax(Client *c) { -	XEvent ev; - -	if(c->isfixed) -		return; -	if((c->ismax = !c->ismax)) { -		c->rx = c->x; -		c->ry = c->y; -		c->rw = c->w; -		c->rh = c->h; -		resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True); -	} -	else -		resize(c, c->rx, c->ry, c->rw, c->rh, True); -	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); -} -  /* extern */  void @@ -112,7 +88,7 @@ dotile(void) {  	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th;  	Client *c; -	for(n = 0, c = nextmanaged(clients); c; c = nextmanaged(c->next)) +	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))  		n++;  	/* window geoms */  	mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1); @@ -209,7 +185,7 @@ restack(void) {  	if(arrange != dofloat) {  		if(!sel->isfloat)  			XLowerWindow(dpy, sel->win); -		for(c = nextmanaged(clients); c; c = nextmanaged(c->next)) { +		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {  			if(c == sel)  				continue;  			XLowerWindow(dpy, c->win); @@ -319,26 +295,3 @@ view(Arg *arg) {  		seltag[arg->i] = True;  	arrange();  } - -void -zoom(Arg *arg) { -	unsigned int n; -	Client *c; - -	if(!sel) -		return; -	if(sel->isfloat || (arrange == dofloat)) { -		togglemax(sel); -		return; -	} -	for(n = 0, c = nextmanaged(clients); c; c = nextmanaged(c->next)) -		n++; - -	if((c = sel) == nextmanaged(clients)) -		if(!(c = nextmanaged(c->next))) -			return; -	detach(c); -	attach(c); -	focus(c); -	arrange(); -} | 
