]> Dogcows Code - chaz/openbox/blobdiff - openbox/keyboard.c
draw the keychain popup only when necessary
[chaz/openbox] / openbox / keyboard.c
index 432599e8245ba68e968664e8e419d3f87a0443a7..2c60ac3d4f632e14c195eb0c1ce0380483b94263 100644 (file)
@@ -31,6 +31,7 @@
 #include "config.h"
 #include "keytree.h"
 #include "keyboard.h"
+#include "translate.h"
 #include "moveresize.h"
 #include "popup.h"
 #include "gettext.h"
@@ -77,11 +78,11 @@ static gboolean chain_timeout(gpointer data)
 
 static void set_curpos(KeyBindingTree *newpos)
 {
-    if (curpos != newpos) {
-        grab_keys(FALSE);
-        curpos = newpos;
-        grab_keys(TRUE);
-    }
+    if (curpos == newpos) return;
+
+    grab_keys(FALSE);
+    curpos = newpos;
+    grab_keys(TRUE);
 
     if (curpos != NULL) {
         gchar *text = NULL;
@@ -292,16 +293,7 @@ void keyboard_event(ObClient *client, const XEvent *e)
         p = curpos->first_child;
     while (p) {
         if (p->key == e->xkey.keycode &&
-            /* tricksy.
-               if you have Super_L and Super_R bound to different modXmasks,
-               this makes either mod mask count as Super
-
-               e.g. Super_L is mod1 and Super_R is mod2, so..
-               p->state = 00011
-               key state is just Super_L so 00001
-               00011 | 00001 == 00011 == p->state
-            */
-            (p->state | e->xkey.state) == p->state)
+            p->state == e->xkey.state)
         {
             /* if we hit a key binding, then close any open menus and run it */
             if (menu_frame_visible)
This page took 0.02211 seconds and 4 git commands to generate.