X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fkeyboard.c;h=2c60ac3d4f632e14c195eb0c1ce0380483b94263;hb=9cb80fc994c09ee62f99f46244b840ce25fd40f4;hp=432599e8245ba68e968664e8e419d3f87a0443a7;hpb=2f541b6ef3fdc0fc1c7604c068b82d9e64b90354;p=chaz%2Fopenbox diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 432599e8..2c60ac3d 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -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)