=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/screen-redraw.c,v retrieving revision 1.53 retrieving revision 1.54 diff -c -r1.53 -r1.54 *** src/usr.bin/tmux/screen-redraw.c 2018/08/19 16:45:03 1.53 --- src/usr.bin/tmux/screen-redraw.c 2018/08/19 20:13:07 1.54 *************** *** 1,4 **** ! /* $OpenBSD: screen-redraw.c,v 1.53 2018/08/19 16:45:03 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: screen-redraw.c,v 1.54 2018/08/19 20:13:07 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 344,351 **** } /* Update status line and change flags if unchanged. */ ! static void ! screen_redraw_update(struct client *c) { struct window *w = c->session->curw->window; struct window_pane *wp; --- 344,351 ---- } /* Update status line and change flags if unchanged. */ ! static int ! screen_redraw_update(struct client *c, int flags) { struct window *w = c->session->curw->window; struct window_pane *wp; *************** *** 358,365 **** redraw = status_prompt_redraw(c); else redraw = status_redraw(c); ! if (!redraw) ! c->flags &= ~CLIENT_REDRAWSTATUS; if (options_get_number(wo, "pane-border-status") != CELL_STATUS_OFF) { redraw = 0; --- 358,365 ---- redraw = status_prompt_redraw(c); else redraw = status_redraw(c); ! if (!redraw && (~flags & CLIENT_REDRAWSTATUSALWAYS)) ! flags &= ~CLIENT_REDRAWSTATUS; if (options_get_number(wo, "pane-border-status") != CELL_STATUS_OFF) { redraw = 0; *************** *** 368,375 **** redraw = 1; } if (redraw) ! c->flags |= CLIENT_REDRAWBORDERS; } } /* Set up redraw context. */ --- 368,376 ---- redraw = 1; } if (redraw) ! flags |= CLIENT_REDRAWBORDERS; } + return (flags); } /* Set up redraw context. */ *************** *** 398,418 **** screen_redraw_screen(struct client *c) { struct screen_redraw_ctx ctx; if (c->flags & CLIENT_SUSPENDED) return; ! screen_redraw_update(c); screen_redraw_set_context(c, &ctx); ! if (c->flags & (CLIENT_REDRAWWINDOW|CLIENT_REDRAWBORDERS)) { if (ctx.pane_status != CELL_STATUS_OFF) screen_redraw_draw_pane_status(&ctx); screen_redraw_draw_borders(&ctx); } ! if (c->flags & CLIENT_REDRAWWINDOW) screen_redraw_draw_panes(&ctx); ! if (ctx.lines != 0 && (c->flags & CLIENT_REDRAWSTATUS)) screen_redraw_draw_status(&ctx); tty_reset(&c->tty); } --- 399,421 ---- screen_redraw_screen(struct client *c) { struct screen_redraw_ctx ctx; + int flags; if (c->flags & CLIENT_SUSPENDED) return; ! flags = screen_redraw_update(c, c->flags); screen_redraw_set_context(c, &ctx); ! if (flags & (CLIENT_REDRAWWINDOW|CLIENT_REDRAWBORDERS)) { if (ctx.pane_status != CELL_STATUS_OFF) screen_redraw_draw_pane_status(&ctx); screen_redraw_draw_borders(&ctx); } ! if (flags & CLIENT_REDRAWWINDOW) screen_redraw_draw_panes(&ctx); ! if (ctx.lines != 0 && ! (flags & (CLIENT_REDRAWSTATUS|CLIENT_REDRAWSTATUSALWAYS))) screen_redraw_draw_status(&ctx); tty_reset(&c->tty); }