Reset the attributes after drawing all or part of the screen, and reset the

region before poll(2). This reduces (but does not eliminate) the chance of the
attributes not being normal if tmux is disconnected without warning (ssh ~.,
reboot from inside, etc).
pull/1/head
Nicholas Marriott 2009-08-10 19:42:03 +00:00
parent fa64c1235e
commit 181e1bcffd
2 changed files with 4 additions and 0 deletions

View File

@ -173,6 +173,7 @@ screen_redraw_screen(struct client *c, int status_only)
/* If only drawing status and it is present, don't need the rest. */
if (status_only && status) {
tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1);
tty_reset(tty);
return;
}
@ -214,6 +215,7 @@ screen_redraw_screen(struct client *c, int status_only)
/* Draw the status line. */
if (status)
tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1);
tty_reset(tty);
}
/* Draw a single pane. */
@ -224,4 +226,5 @@ screen_redraw_pane(struct client *c, struct window_pane *wp)
for (i = 0; i < wp->sy; i++)
tty_draw_line(&c->tty, wp->screen, i, wp->xoff, wp->yoff);
tty_reset(&c->tty);
}

View File

@ -866,6 +866,7 @@ server_handle_client(struct client *c)
/* Ensure cursor position and mode settings. */
status = options_get_number(&c->session->options, "status");
tty_region(&c->tty, 0, c->tty.sy - 1, 0);
if (!window_pane_visible(wp) || wp->yoff + s->cy >= c->tty.sy - status)
tty_cursor(&c->tty, 0, 0, 0, 0);
else