summaryrefslogtreecommitdiffstats
path: root/server-client.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2019-07-02 23:02:26 +0100
committerThomas Adam <thomas@xteddy.org>2019-07-02 23:02:26 +0100
commitbe5af704ad4f80a3ae77281aa617284a5a802e0e (patch)
tree6532ec308c9cedaba803d14bea0d0c375732a70b /server-client.c
parentb9fbf02ad500cd6dfc4d697fc26c7d571508ec5c (diff)
parent6a489fa7f6360bcd9c0d6b87546d3eb6b0a3654a (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/server-client.c b/server-client.c
index 3f908eca..a45b1e0a 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1024,16 +1024,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) {
@@ -1214,16 +1204,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);
+ }
}
}