all repos — openbox @ 829a9fafd4516f8af21065195d43ded010f2e232

openbox fork - make it a bit more like ryudo

when no modifiers are in a binding, then make it non-interactive
Dana Jansens danakj@orodu.net
commit

829a9fafd4516f8af21065195d43ded010f2e232

parent

0745e2ee0aa6b8e7dbab1a4124e60ccb5b4e8441

2 files changed, 23 insertions(+), 1 deletions(-)

jump to
M openbox/keyboard.copenbox/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.copenbox/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;