aboutsummaryrefslogtreecommitdiff
path: root/server-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c20
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;