diff options
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/server-client.c b/server-client.c index eb29aebb..5f7ce6b8 100644 --- a/server-client.c +++ b/server-client.c @@ -23,8 +23,6 @@ #include <errno.h> #include <event.h> #include <fcntl.h> -#include <imsg.h> -#include <paths.h> #include <stdlib.h> #include <string.h> #include <time.h> @@ -296,7 +294,9 @@ server_client_lost(struct client *c) if (c->flags & CLIENT_TERMINAL) tty_free(&c->tty); free(c->ttyname); + free(c->term_name); + free(c->term_type); status_free(c); @@ -1294,10 +1294,6 @@ server_client_handle_key(struct client *c, struct key_event *event) */ 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: @@ -1308,6 +1304,10 @@ server_client_handle_key(struct client *c, struct key_event *event) } } server_client_clear_overlay(c); + if (c->prompt_string != NULL) { + if (status_prompt_key(c, event->key) == 0) + return (0); + } } /* @@ -1562,6 +1562,8 @@ server_client_reset_state(struct client *c) } else { s = wp->screen; mode = s->mode; + if (c->prompt_string != NULL || c->message_string != NULL) + mode &= ~MODE_CURSOR; } log_debug("%s: client %s mode %x", __func__, c->name, mode); @@ -1780,7 +1782,6 @@ server_client_check_redraw(struct client *c) if (!redraw) continue; log_debug("%s: redrawing pane %%%u", __func__, wp->id); - tty_update_mode(tty, mode, NULL); screen_redraw_pane(c, wp); } c->redraw_panes = 0; @@ -1788,7 +1789,6 @@ server_client_check_redraw(struct client *c) } if (c->flags & CLIENT_ALLREDRAWFLAGS) { - tty_update_mode(tty, mode, NULL); if (options_get_number(s->options, "set-titles")) server_client_set_title(c); screen_redraw_screen(c); @@ -2099,6 +2099,10 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg) c->name = name; log_debug("client %p name is %s", c, c->name); +#ifdef __CYGWIN__ + c->fd = open(c->ttyname, O_RDWR|O_NOCTTY); +#endif + if (c->flags & CLIENT_CONTROL) { close(c->fd); c->fd = -1; |