when no modifiers are in a binding, then make it non-interactive
Dana Jansens danakj@orodu.net
2 files changed,
23 insertions(+),
1 deletions(-)
M
openbox/keyboard.c
→
openbox/keyboard.c
@@ -83,6 +83,7 @@ gboolean keyboard_bind(GList *keylist, ObAction *action)
{ KeyBindingTree *tree, *t; gboolean conflict; + gboolean mods = TRUE; g_assert(keylist != NULL); g_assert(action != NULL);@@ -96,12 +97,26 @@ tree_destroy(tree);
tree = NULL; } else t = tree; - while (t->first_child) t = t->first_child; if (conflict) { g_warning("conflict with binding"); tree_destroy(tree); return FALSE; + } + + /* find if every key in this chain has modifiers, and also find the + bottom node of the tree */ + while (t->first_child) { + if (!t->state) + mods = FALSE; + t = t->first_child; + } + + /* when there are no modifiers in the binding, then the action cannot + be interactive */ + if (!mods && action->data.any.interactive) { + action->data.any.interactive = FALSE; + action->data.inter.final = TRUE; } /* set the action */
M
openbox/mouse.c
→
openbox/mouse.c
@@ -346,6 +346,13 @@ }
grab_all_clients(FALSE); + /* when there are no modifiers in the binding, then the action cannot + be interactive */ + if (!state && action->data.any.interactive) { + action->data.any.interactive = FALSE; + action->data.inter.final = TRUE; + } + /* add the binding */ b = g_new0(ObMouseBinding, 1); b->state = state;