diff options
author | 2019-07-02 20:09:19 +0000 | |
---|---|---|
committer | 2019-07-02 20:09:19 +0000 | |
commit | 930c3d17b71bdeef141eabadffe1913c1e91d478 (patch) | |
tree | 631053e7e6aa4008780726ae28d4b789b9350531 /usr.bin/tmux/server-client.c | |
parent | Add cpuid support for arm64 so that we can recognize which (diff) | |
download | wireguard-openbsd-930c3d17b71bdeef141eabadffe1913c1e91d478.tar.xz wireguard-openbsd-930c3d17b71bdeef141eabadffe1913c1e91d478.zip |
Command prompt key presses need to avoid the command queue, GitHub issue
1817. Also a tmux.1 fix from jmc.
Diffstat (limited to 'usr.bin/tmux/server-client.c')
-rw-r--r-- | usr.bin/tmux/server-client.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index aaac84fd242..e795fff470c 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.290 2019/06/26 18:28:31 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.291 2019/07/02 20:09:19 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -1026,16 +1026,6 @@ server_client_key_callback(struct cmdq_item *item, void *data) fatal("gettimeofday failed"); session_update_activity(s, &c->activity_time); - /* Handle status line. */ - if (~c->flags & CLIENT_READONLY) - status_message_clear(c); - if (c->prompt_string != NULL) { - if (c->flags & CLIENT_READONLY) - goto out; - if (status_prompt_key(c, key) == 0) - goto out; - } - /* Check for mouse keys. */ m->valid = 0; if (key == KEYC_MOUSE) { @@ -1216,16 +1206,24 @@ server_client_handle_key(struct client *c, struct key_event *event) return (0); /* - * Key presses in overlay mode are a special case. The queue might be - * blocked so they need to be processed immediately rather than queued. + * Key presses in overlay mode and the command prompt are a special + * case. The queue might be blocked so they need to be processed + * immediately rather than queued. */ - if ((~c->flags & CLIENT_READONLY) && c->overlay_key != NULL) { - switch (c->overlay_key(c, event)) { - case 0: - return (0); - case 1: - server_client_clear_overlay(c); - return (0); + if (~c->flags & CLIENT_READONLY) { + status_message_clear(c); + if (c->prompt_string != NULL) { + if (status_prompt_key(c, event->key) == 0) + return (0); + } + if (c->overlay_key != NULL) { + switch (c->overlay_key(c, event)) { + case 0: + return (0); + case 1: + server_client_clear_overlay(c); + return (0); + } } } |