dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 288cf78b180db846ef2481124f3e7a8fe66c01f2
parent 6411aa921baabd11bfa55eb708bb804dfc6b1375
Author: Anselm R Garbe <garbeam@gmail.com>
Date:   Mon, 25 Aug 2008 09:44:23 +0100

grabbuttons() and grabkeys() are now independent from prior numlockmask initialization
Diffstat:
Mdwm.c | 54+++++++++++++++++++++++++++++++-----------------------
1 file changed, 31 insertions(+), 23 deletions(-)
diff --git a/dwm.c b/dwm.c
@@ -191,6 +191,7 @@ static void unmanage(Client *c);
 static void unmapnotify(XEvent *e);
 static void updatebar(void);
 static void updategeom(void);
+static void updatenumlockmask(void);
 static void updatesizehints(Client *c);
 static void updatetitle(Client *c);
 static void updatewmhints(Client *c);
@@ -735,34 +736,27 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size) {
 
 void
 grabbuttons(Client *c, Bool focused) {
-    unsigned int i, j;
-    unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
-
-    XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
-    if(focused) {
-        for(i = 0; i < LENGTH(buttons); i++)
-            if(buttons[i].click == ClkClientWin)
-                for(j = 0; j < LENGTH(modifiers); j++)
-                    XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
-    } else
-        XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
-                    BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
+    updatenumlockmask();
+    {
+        unsigned int i, j;
+        unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
+        XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+        if(focused) {
+            for(i = 0; i < LENGTH(buttons); i++)
+                if(buttons[i].click == ClkClientWin)
+                    for(j = 0; j < LENGTH(modifiers); j++)
+                        XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
+        } else
+            XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
+                        BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
+    }
 }
 
 void
 grabkeys(void) {
-    unsigned int i, j;
-    XModifierKeymap *modmap;
-
-    /* update modifier map */
-    modmap = XGetModifierMapping(dpy);
-    for(i = 0; i < 8; i++)
-        for(j = 0; j < modmap->max_keypermod; j++)
-            if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
-                numlockmask = (1 << i);
-    XFreeModifiermap(modmap);
-
+    updatenumlockmask();
     { /* grab keys */
+        unsigned int i, j;
         unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
         KeyCode code;
 
@@ -1576,6 +1570,20 @@ updategeom(void) {
 }
 
 void
+updatenumlockmask(void) {
+    unsigned int i, j;
+    XModifierKeymap *modmap;
+
+    numlockmask = 0;
+    modmap = XGetModifierMapping(dpy);
+    for(i = 0; i < 8; i++)
+        for(j = 0; j < modmap->max_keypermod; j++)
+            if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
+                numlockmask = (1 << i);
+    XFreeModifiermap(modmap);
+}
+
+void
 updatesizehints(Client *c) {
     long msize;
     XSizeHints size;