diff options
| author | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 13:42:39 +0100 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@suckless.org> | 2007-02-19 13:42:39 +0100 | 
| commit | 30af19d4426ca32dc38318bbe87534cc44484998 (patch) | |
| tree | c3d862223531f5b02e3cb6e31b7e9ee5d38193a6 | |
| parent | 5d9146ff372ae0c5196e290fb2c1f828d4137e20 (diff) | |
added some new convenience functions
| -rw-r--r-- | client.c | 49 | ||||
| -rw-r--r-- | dwm.h | 5 | ||||
| -rw-r--r-- | tile.c | 5 | ||||
| -rw-r--r-- | view.c | 11 | 
4 files changed, 40 insertions, 30 deletions
| @@ -10,13 +10,6 @@  /* static */  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 +61,20 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {  /* extern */  void +attach(Client *c) { +	if(clients) +		clients->prev = c; +	c->next = clients; +	clients = c; +} + +void +attachstack(Client *c) { +	c->snext = stack; +	stack = c; +} + +void  configure(Client *c) {  	XConfigureEvent ce; @@ -86,6 +93,24 @@ configure(Client *c) {  }  void +detach(Client *c) { +	if(c->prev) +		c->prev->next = c->next; +	if(c->next) +		c->next->prev = c->prev; +	if(c == clients) +		clients = c->next; +	c->next = c->prev = NULL; +} + +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; @@ -95,8 +120,7 @@ focus(Client *c) {  	}  	if(c) {  		detachstack(c); -		c->snext = stack; -		stack = c; +		attachstack(c);  		grabbuttons(c, True);  	}  	sel = c; @@ -189,11 +213,8 @@ manage(Window w, XWindowAttributes *wa) {  	settags(c, t);  	if(!c->isfloat)  		c->isfloat = (t != 0) || c->isfixed; -	if(clients) -		clients->prev = c; -	c->next = clients; -	c->snext = stack; -	stack = clients = c; +	attach(c); +	attachstack(c);  	c->isbanned = True;  	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);  	XMapWindow(dpy, c->win); @@ -99,7 +99,11 @@ 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 Client *getclient(Window w);		/* return client of w */  extern Bool isprotodel(Client *c);		/* returns True if c->win supports wmatom[WMDelete] */ @@ -144,7 +148,6 @@ 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 */  /* view.c */ -extern void detach(Client *c);			/* detaches c from global client list */  extern void dofloat(void);			/* arranges all windows floating */  extern void focusnext(Arg *arg);		/* focuses next visible client, arg is ignored  */  extern void focusprev(Arg *arg);		/* focuses previous visible client, arg is ignored */ @@ -125,10 +125,7 @@ zoom(Arg *arg) {  		if(!(c = nextmanaged(c->next)))  			return;  	detach(c); -	if(clients) -		clients->prev = c; -	c->next = clients; -	clients = c; +	attach(c);  	focus(c);  	arrange();  } @@ -8,17 +8,6 @@  void (*arrange)(void) = DEFMODE;  void -detach(Client *c) { -	if(c->prev) -		c->prev->next = c->next; -	if(c->next) -		c->next->prev = c->prev; -	if(c == clients) -		clients = c->next; -	c->next = c->prev = NULL; -} - -void  dofloat(void) {  	Client *c; | 
