Hi
We should do it for all redraw functions. Does this work instead? Also
fixes tty_draw_line.
Index: server-client.c
===================================================================
RCS file: /cvs/src/usr.bin/tmux/server-client.c,v
retrieving revision 1.136
diff -u -p -r1.136 server-client.c
--- server-client.c 25 Apr 2015 18:33:59 -0000 1.136
+++ server-client.c 30 Apr 2015 07:37:23 -0000
@@ -875,14 +875,16 @@ void
server_client_check_redraw(struct client *c)
{
struct session *s = c->session;
+ struct tty *tty = &c->tty;
struct window_pane *wp;
int flags, redraw;
if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED))
return;
- flags = c->tty.flags & TTY_FREEZE;
- c->tty.flags &= ~TTY_FREEZE;
+ flags = tty->flags & (TTY_FREEZE|TTY_NOCURSOR);
+ tty->flags = (tty->flags & ~TTY_FREEZE) | TTY_NOCURSOR;
+ tty_update_mode(tty, tty->mode, NULL);
if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) {
if (options_get_number(&s->options, "set-titles"))
@@ -918,7 +920,8 @@ server_client_check_redraw(struct client
if (c->flags & CLIENT_STATUS)
screen_redraw_screen(c, 0, 1, 0);
- c->tty.flags |= flags;
+ tty->flags = (tty->flags & ~(TTY_FREEZE|TTY_NOCURSOR)) | flags;
+ tty_update_mode(tty, tty->mode, NULL);
c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS|CLIENT_BORDERS);
}
Index: tty.c
===================================================================
RCS file: /cvs/src/usr.bin/tmux/tty.c,v
retrieving revision 1.180
diff -u -p -r1.180 tty.c
--- tty.c 29 Apr 2015 15:59:08 -0000 1.180
+++ tty.c 30 Apr 2015 07:37:23 -0000
@@ -500,7 +500,7 @@ tty_update_mode(struct tty *tty, int mod
{
int changed;
- if (strcmp(s->ccolour, tty->ccolour))
+ if (s != NULL && strcmp(s->ccolour, tty->ccolour))
tty_force_cursor_colour(tty, s->ccolour);
if (tty->flags & TTY_NOCURSOR)
@@ -517,7 +517,7 @@ tty_update_mode(struct tty *tty, int mod
} else
tty_putcode(tty, TTYC_CIVIS);
}
- if (tty->cstyle != s->cstyle) {
+ if (s != NULL && tty->cstyle != s->cstyle) {
if (tty_term_has(tty->term, TTYC_SS)) {
if (s->cstyle == 0 &&
tty_term_has(tty->term, TTYC_SE))
@@ -667,8 +667,11 @@ tty_draw_line(struct tty *tty, const str
struct grid_cell tmpgc;
struct utf8_data ud;
u_int i, sx;
+ int flags;
- tty_update_mode(tty, tty->mode & ~MODE_CURSOR, s);
+ flags = tty->flags & TTY_NOCURSOR;
+ tty->flags |= TTY_NOCURSOR;
+ tty_update_mode(tty, tty->mode, s);
sx = screen_size_x(s);
if (sx > s->grid->linedata[s->grid->hsize + py].cellsize)
@@ -703,18 +706,20 @@ tty_draw_line(struct tty *tty, const str
tty_cell(tty, gc, wp);
}
- if (sx >= tty->sx) {
- tty_update_mode(tty, tty->mode, s);
- return;
+ if (sx < tty->sx) {
+ tty_attributes(tty, &grid_default_cell, wp);
+
+ tty_cursor(tty, ox + sx, oy + py);
+ if (sx != screen_size_x(s) &&
+ ox + screen_size_x(s) >= tty->sx &&
+ tty_term_has(tty->term, TTYC_EL) &&
+ !tty_fake_bce(tty, wp))
+ tty_putcode(tty, TTYC_EL);
+ else
+ tty_repeat_space(tty, screen_size_x(s) - sx);
}
- tty_attributes(tty, &grid_default_cell, wp);
- tty_cursor(tty, ox + sx, oy + py);
- if (sx != screen_size_x(s) && ox + screen_size_x(s) >= tty->sx &&
- tty_term_has(tty->term, TTYC_EL) && !tty_fake_bce(tty, wp))
- tty_putcode(tty, TTYC_EL);
- else
- tty_repeat_space(tty, screen_size_x(s) - sx);
+ tty->flags = (tty->flags & ~TTY_NOCURSOR) | flags;
tty_update_mode(tty, tty->mode, s);
}
Post by George NachmanThe attached patch hides the cursor while drawing borders between window
panes.
Most programs hide the cursor while redrawing their chrome because it's
ugly to see the cursor jumping around the screen. Better for it to
disappear for a moment.
[1]https://dl.dropboxusercontent.com/u/33889723/iterm2.9.20150429-nightly.mov
References
Visible links
1. https://dl.dropboxusercontent.com/u/33889723/iterm2.9.20150429-nightly.mov
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
tmux-users mailing list
https://lists.sourceforge.net/lists/listinfo/tmux-users