From: Dana Jansens Date: Sun, 31 Aug 2003 18:52:56 +0000 (+0000) Subject: when no modifiers are in a binding, then make it non-interactive X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=829a9fafd4516f8af21065195d43ded010f2e232;p=chaz%2Fopenbox when no modifiers are in a binding, then make it non-interactive --- diff --git a/openbox/keyboard.c b/openbox/keyboard.c index ed981240..f73fe298 100644 --- a/openbox/keyboard.c +++ b/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,7 +97,6 @@ gboolean keyboard_bind(GList *keylist, ObAction *action) tree = NULL; } else t = tree; - while (t->first_child) t = t->first_child; if (conflict) { g_warning("conflict with binding"); @@ -104,6 +104,21 @@ gboolean keyboard_bind(GList *keylist, ObAction *action) 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 */ t->actions = g_slist_append(t->actions, action); /* assimilate this built tree into the main tree. assimilation diff --git a/openbox/mouse.c b/openbox/mouse.c index 15d77ae6..e8b6aec0 100644 --- a/openbox/mouse.c +++ b/openbox/mouse.c @@ -346,6 +346,13 @@ gboolean mouse_bind(char *buttonstr, char *contextstr, ObMouseAction mact, 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;