X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fkeyboard.c;h=218e251accebbdf69476e157246abfdf9dc73a09;hb=819be4fea8d76da30b75c047d70833293af1002c;hp=432599e8245ba68e968664e8e419d3f87a0443a7;hpb=2f541b6ef3fdc0fc1c7604c068b82d9e64b90354;p=chaz%2Fopenbox diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 432599e8..218e251a 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) @@ -319,14 +311,6 @@ void keyboard_event(ObClient *client, const XEvent *e) else { keyboard_reset_chains(0); - /* If we don't have the keyboard grabbed, then ungrab it with - XUngrabKeyboard, so that there is not a passive grab left - on from the KeyPress. If the grab is left on, and focus - moves during that time, it will be NotifyWhileGrabbed, and - applications like to ignore those! */ - if (!keyboard_interactively_grabbed()) - XUngrabKeyboard(ob_display, e->xkey.time); - action_run_key(p->actions, client, e->xkey.state, e->xkey.x_root, e->xkey.y_root, e->xkey.time);