aewl
changeset 23:95ffdfd0a819
some more additions/fixes
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Wed, 12 Jul 2006 00:00:25 +0200 |
parents | bd3a44353916 |
children | 40b651a26a04 |
files | client.c cmd.c event.c kb.c wm.h |
diffstat | 5 files changed, 32 insertions(+), 3 deletions(-) [+] |
line diff
1.1 --- a/client.c Tue Jul 11 23:46:39 2006 +0200 1.2 +++ b/client.c Wed Jul 12 00:00:25 2006 +0200 1.3 @@ -93,6 +93,7 @@ 1.4 } 1.5 XUnmapWindow(dpy, c->title); 1.6 draw_bar(); 1.7 + discard_events(EnterWindowMask); 1.8 XFlush(dpy); 1.9 } 1.10 1.11 @@ -116,7 +117,7 @@ 1.12 XGetTransientForHint(dpy, c->win, &c->trans); 1.13 twa.override_redirect = 1; 1.14 twa.background_pixmap = ParentRelative; 1.15 - twa.event_mask = SubstructureNotifyMask | ExposureMask; 1.16 + twa.event_mask = ExposureMask; 1.17 1.18 c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th, 1.19 0, DefaultDepth(dpy, screen), CopyFromParent, 1.20 @@ -191,11 +192,19 @@ 1.21 XFlush(dpy); 1.22 XSetErrorHandler(error_handler); 1.23 XUngrabServer(dpy); 1.24 - discard_events(EnterWindowMask); 1.25 if(stack) 1.26 focus(stack); 1.27 } 1.28 1.29 +Client * 1.30 +gettitle(Window w) 1.31 +{ 1.32 + Client *c; 1.33 + for(c = clients; c; c = c->next) 1.34 + if(c->title == w) 1.35 + return c; 1.36 + return NULL; 1.37 +} 1.38 1.39 Client * 1.40 getclient(Window w)
2.1 --- a/cmd.c Tue Jul 11 23:46:39 2006 +0200 2.2 +++ b/cmd.c Wed Jul 12 00:00:25 2006 +0200 2.3 @@ -20,6 +20,22 @@ 2.4 } 2.5 2.6 void 2.7 +sel(void *aux) 2.8 +{ 2.9 + const char *arg = aux; 2.10 + Client *c; 2.11 + 2.12 + if(!arg || !stack) 2.13 + return; 2.14 + if(!strncmp(arg, "next", 5)) 2.15 + focus(stack->snext ? stack->snext : stack); 2.16 + else if(!strncmp(arg, "prev", 5)) { 2.17 + for(c = stack; c && c->snext; c = c->snext); 2.18 + focus(c ? c : stack); 2.19 + } 2.20 +} 2.21 + 2.22 +void 2.23 kill(void *aux) 2.24 { 2.25 Client *c = stack;
3.1 --- a/event.c Tue Jul 11 23:46:39 2006 +0200 3.2 +++ b/event.c Wed Jul 12 00:00:25 2006 +0200 3.3 @@ -146,7 +146,7 @@ 3.4 Client *c; 3.5 3.6 if(ev->count == 0) { 3.7 - if((c = getclient(ev->window))) 3.8 + if((c = gettitle(ev->window))) 3.9 draw_client(c); 3.10 else if(ev->window == barwin) 3.11 draw_bar();
4.1 --- a/kb.c Tue Jul 11 23:46:39 2006 +0200 4.2 +++ b/kb.c Wed Jul 12 00:00:25 2006 +0200 4.3 @@ -19,6 +19,8 @@ 4.4 static Key key[] = { 4.5 { Mod1Mask, XK_Return, run, term }, 4.6 { Mod1Mask, XK_p, run, proglist }, 4.7 + { Mod1Mask, XK_k, sel, "prev"}, 4.8 + { Mod1Mask, XK_j, sel, "next"}, 4.9 { Mod1Mask | ShiftMask, XK_c, kill, NULL}, 4.10 { Mod1Mask | ShiftMask, XK_q, quit, NULL}, 4.11 };
5.1 --- a/wm.h Tue Jul 11 23:46:39 2006 +0200 5.2 +++ b/wm.h Wed Jul 12 00:00:25 2006 +0200 5.3 @@ -63,6 +63,7 @@ 5.4 extern void run(void *aux); 5.5 extern void quit(void *aux); 5.6 extern void kill(void *aux); 5.7 +extern void sel(void *aux); 5.8 5.9 /* client.c */ 5.10 extern void manage(Window w, XWindowAttributes *wa); 5.11 @@ -73,6 +74,7 @@ 5.12 extern void draw_client(Client *c); 5.13 extern void resize(Client *c); 5.14 extern void update_size(Client *c); 5.15 +extern Client *gettitle(Window w); 5.16 5.17 /* event.c */ 5.18 extern unsigned int discard_events(long even_mask);