mirror of
https://github.com/tmux/tmux.git
synced 2025-01-11 18:58:47 +00:00
If a non-repeating key is used when repeating, it should be treated as
an entirely new key press, not checked in root table and ignored if not found. GitHub issue 1513.
This commit is contained in:
parent
7339845c01
commit
0c7f64458f
@ -1022,6 +1022,7 @@ table_changed:
|
||||
}
|
||||
flags = c->flags;
|
||||
|
||||
try_again:
|
||||
/* Log key table. */
|
||||
if (wp == NULL)
|
||||
log_debug("key table %s (no pane)", table->name);
|
||||
@ -1030,7 +1031,6 @@ table_changed:
|
||||
if (c->flags & CLIENT_REPEAT)
|
||||
log_debug("currently repeating");
|
||||
|
||||
try_again:
|
||||
/* Try to see if there is a key binding in the current table. */
|
||||
bd = key_bindings_get(table, key0);
|
||||
if (bd != NULL) {
|
||||
@ -1041,10 +1041,12 @@ try_again:
|
||||
*/
|
||||
if ((c->flags & CLIENT_REPEAT) &&
|
||||
(~bd->flags & KEY_BINDING_REPEAT)) {
|
||||
log_debug("found in key table %s (not repeating)",
|
||||
table->name);
|
||||
server_client_set_key_table(c, NULL);
|
||||
first = table = c->keytable;
|
||||
c->flags &= ~CLIENT_REPEAT;
|
||||
server_status_client(c);
|
||||
table = c->keytable;
|
||||
goto table_changed;
|
||||
}
|
||||
log_debug("found in key table %s", table->name);
|
||||
@ -1094,10 +1096,13 @@ try_again:
|
||||
log_debug("not found in key table %s", table->name);
|
||||
if (!server_client_is_default_key_table(c, table) ||
|
||||
(c->flags & CLIENT_REPEAT)) {
|
||||
log_debug("trying in root table");
|
||||
server_client_set_key_table(c, NULL);
|
||||
table = c->keytable;
|
||||
if (c->flags & CLIENT_REPEAT)
|
||||
first = table;
|
||||
c->flags &= ~CLIENT_REPEAT;
|
||||
server_status_client(c);
|
||||
table = c->keytable;
|
||||
goto table_changed;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user