when no modifiers are in a binding, then make it non-interactive
This commit is contained in:
parent
0745e2ee0a
commit
829a9fafd4
2 changed files with 23 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue