tsome more additions/fixes - dwm - [fork] customized build of dwm, the dynamic … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2a0fc84c4af2257d79c4c7cb37131c4acb763162 | |
parent 896f08d7d553f7def3877648c113cf03e6ca546a | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Wed, 12 Jul 2006 00:00:25 +0200 | |
some more additions/fixes | |
Diffstat: | |
M client.c | 13 +++++++++++-- | |
M cmd.c | 16 ++++++++++++++++ | |
M event.c | 2 +- | |
M kb.c | 2 ++ | |
M wm.h | 2 ++ | |
5 files changed, 32 insertions(+), 3 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -93,6 +93,7 @@ focus(Client *c) | |
} | |
XUnmapWindow(dpy, c->title); | |
draw_bar(); | |
+ discard_events(EnterWindowMask); | |
XFlush(dpy); | |
} | |
t@@ -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, | |
t@@ -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) | |
diff --git a/cmd.c b/cmd.c | |
t@@ -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; | |
diff --git a/event.c b/event.c | |
t@@ -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(); | |
diff --git a/kb.c b/kb.c | |
t@@ -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}, | |
}; | |
diff --git a/wm.h b/wm.h | |
t@@ -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); | |
t@@ -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); |