JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
only buffer keypresses on new kbspawn()
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index dc9f318..7b017cb 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -211,6 +211,7 @@ static void setmfact(const Arg *arg);
 static void setup(void);
 static void showhide(Client *c);
 static void sigchld(int unused);
+static void kbspawn(const Arg *arg);
 static void spawn(const Arg *arg);
 static void tag(const Arg *arg);
 static void tagmon(const Arg *arg);
@@ -1269,8 +1270,11 @@ maprequest(XEvent *e) {
 
        if(!XGetWindowAttributes(dpy, ev->window, &wa))
                return;
-       if(wa.override_redirect)
+       if(wa.override_redirect) {
+               key_buffer_len = 0;
+               key_buffering = False;
                return;
+       }
        if(!wintoclient(ev->window))
                manage(ev->window, &wa);
 }
@@ -1795,6 +1799,14 @@ sigchld(int unused) {
 }
 
 void
+kbspawn(const Arg *arg) {
+       key_buffering = True;
+       key_buffer_len = 0;
+       grab_typing_keys();
+       spawn(arg);
+}
+
+void
 spawn(const Arg *arg) {
        int tag = 0, i;
        if(arg->v == termcmd) {
@@ -1809,9 +1821,6 @@ spawn(const Arg *arg) {
        }
        if(arg->v == dmenucmd)
                dmenumon[0] = '0' + selmon->num;
-       key_buffering = True;
-       key_buffer_len = 0;
-       grab_typing_keys();
        if(fork() == 0) {
                if(dpy)
                        close(ConnectionNumber(dpy));