summaryrefslogtreecommitdiffstats
path: root/key-bindings.c
diff options
context:
space:
mode:
authornicm <nicm>2017-02-06 15:00:41 +0000
committernicm <nicm>2017-02-06 15:00:41 +0000
commite67548dc36fdb4454aded1c95bd35e2443191f94 (patch)
tree2e7bb998b44f8feb59b06e9b2fbd9be2b811de5b /key-bindings.c
parentd150d9b384612c1ee2c52009b996a4466e111049 (diff)
Cancel key table when switching session, unless the key is going to
repeat. Reported by Amos Bird.
Diffstat (limited to 'key-bindings.c')
-rw-r--r--key-bindings.c12
1 files changed, 8 insertions, 4 deletions
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);
+ }
}