From e67548dc36fdb4454aded1c95bd35e2443191f94 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 6 Feb 2017 15:00:41 +0000 Subject: Cancel key table when switching session, unless the key is going to repeat. Reported by Amos Bird. --- key-bindings.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'key-bindings.c') diff --git a/key-bindings.c b/key-bindings.c index 4cbb34ec..d96b51f6 100644 --- a/key-bindings.c +++ b/key-bindings.c @@ -400,8 +400,9 @@ void key_bindings_dispatch(struct key_binding *bd, struct client *c, struct mouse_event *m, struct cmd_find_state *fs) { - struct cmd *cmd; - int readonly; + struct cmd *cmd; + struct cmdq_item *item; + int readonly; readonly = 1; TAILQ_FOREACH(cmd, &bd->cmdlist->list, qentry) { @@ -410,6 +411,9 @@ key_bindings_dispatch(struct key_binding *bd, struct client *c, } if (!readonly && (c->flags & CLIENT_READONLY)) cmdq_append(c, cmdq_get_callback(key_bindings_read_only, NULL)); - else - cmdq_append(c, cmdq_get_command(bd->cmdlist, fs, m, 0)); + else { + item = cmdq_get_command(bd->cmdlist, fs, m, 0); + item->repeat = bd->can_repeat; + cmdq_append(c, item); + } } -- cgit