diff options
| author | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-12 00:00:25 +0200 | 
|---|---|---|
| committer | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-12 00:00:25 +0200 | 
| commit | 2a0fc84c4af2257d79c4c7cb37131c4acb763162 (patch) | |
| tree | e335ce623b7f79186b52bc1d73acbfead90cab08 | |
| parent | 896f08d7d553f7def3877648c113cf03e6ca546a (diff) | |
| download | dwm-2a0fc84c4af2257d79c4c7cb37131c4acb763162.tar.gz | |
some more additions/fixes
| -rw-r--r-- | client.c | 13 | ||||
| -rw-r--r-- | cmd.c | 16 | ||||
| -rw-r--r-- | event.c | 2 | ||||
| -rw-r--r-- | kb.c | 2 | ||||
| -rw-r--r-- | wm.h | 2 | 
5 files changed, 32 insertions, 3 deletions
| @@ -93,6 +93,7 @@ focus(Client *c)  	}  	XUnmapWindow(dpy, c->title);  	draw_bar(); +	discard_events(EnterWindowMask);  	XFlush(dpy);  } @@ -116,7 +117,7 @@ manage(Window w, XWindowAttributes *wa)  	XGetTransientForHint(dpy, c->win, &c->trans);  	twa.override_redirect = 1;  	twa.background_pixmap = ParentRelative; -	twa.event_mask = SubstructureNotifyMask | ExposureMask; +	twa.event_mask = ExposureMask;  	c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,  			0, DefaultDepth(dpy, screen), CopyFromParent, @@ -191,11 +192,19 @@ unmanage(Client *c)  	XFlush(dpy);  	XSetErrorHandler(error_handler);  	XUngrabServer(dpy); -	discard_events(EnterWindowMask);  	if(stack)  		focus(stack);  } +Client * +gettitle(Window w) +{ +	Client *c; +	for(c = clients; c; c = c->next) +		if(c->title == w) +			return c; +	return NULL; +}  Client *  getclient(Window w) @@ -20,6 +20,22 @@ quit(void *aux)  }  void +sel(void *aux) +{ +	const char *arg = aux; +	Client *c; + +	if(!arg || !stack) +		return; +	if(!strncmp(arg, "next", 5)) +		focus(stack->snext ? stack->snext : stack); +	else if(!strncmp(arg, "prev", 5)) { +		for(c = stack; c && c->snext; c = c->snext); +		focus(c ? c : stack); +	} +} + +void  kill(void *aux)  {  	Client *c = stack; @@ -146,7 +146,7 @@ expose(XEvent *e)  	Client *c;  	if(ev->count == 0) { -		if((c = getclient(ev->window))) +		if((c = gettitle(ev->window)))  			draw_client(c);  		else if(ev->window == barwin)  			draw_bar(); @@ -19,6 +19,8 @@ static const char *proglist[] = {  static Key key[] = {  	{ Mod1Mask, XK_Return, run, term },  	{ Mod1Mask, XK_p, run, proglist },  +	{ Mod1Mask, XK_k, sel, "prev"},  +	{ Mod1Mask, XK_j, sel, "next"},   	{ Mod1Mask | ShiftMask, XK_c, kill, NULL},   	{ Mod1Mask | ShiftMask, XK_q, quit, NULL},  }; @@ -63,6 +63,7 @@ extern void draw_bar();  extern void run(void *aux);  extern void quit(void *aux);  extern void kill(void *aux); +extern void sel(void *aux);  /* client.c */  extern void manage(Window w, XWindowAttributes *wa); @@ -73,6 +74,7 @@ extern void update_name(Client *c);  extern void draw_client(Client *c);  extern void resize(Client *c);  extern void update_size(Client *c); +extern Client *gettitle(Window w);  /* event.c */  extern unsigned int discard_events(long even_mask); | 
