version 1.53, 2018/08/19 16:45:03 |
version 1.54, 2018/08/19 20:13:07 |
|
|
} |
} |
|
|
/* Update status line and change flags if unchanged. */ |
/* Update status line and change flags if unchanged. */ |
static void |
static int |
screen_redraw_update(struct client *c) |
screen_redraw_update(struct client *c, int flags) |
{ |
{ |
struct window *w = c->session->curw->window; |
struct window *w = c->session->curw->window; |
struct window_pane *wp; |
struct window_pane *wp; |
|
|
redraw = status_prompt_redraw(c); |
redraw = status_prompt_redraw(c); |
else |
else |
redraw = status_redraw(c); |
redraw = status_redraw(c); |
if (!redraw) |
if (!redraw && (~flags & CLIENT_REDRAWSTATUSALWAYS)) |
c->flags &= ~CLIENT_REDRAWSTATUS; |
flags &= ~CLIENT_REDRAWSTATUS; |
|
|
if (options_get_number(wo, "pane-border-status") != CELL_STATUS_OFF) { |
if (options_get_number(wo, "pane-border-status") != CELL_STATUS_OFF) { |
redraw = 0; |
redraw = 0; |
|
|
redraw = 1; |
redraw = 1; |
} |
} |
if (redraw) |
if (redraw) |
c->flags |= CLIENT_REDRAWBORDERS; |
flags |= CLIENT_REDRAWBORDERS; |
} |
} |
|
return (flags); |
} |
} |
|
|
/* Set up redraw context. */ |
/* Set up redraw context. */ |
|
|
screen_redraw_screen(struct client *c) |
screen_redraw_screen(struct client *c) |
{ |
{ |
struct screen_redraw_ctx ctx; |
struct screen_redraw_ctx ctx; |
|
int flags; |
|
|
if (c->flags & CLIENT_SUSPENDED) |
if (c->flags & CLIENT_SUSPENDED) |
return; |
return; |
|
|
screen_redraw_update(c); |
flags = screen_redraw_update(c, c->flags); |
screen_redraw_set_context(c, &ctx); |
screen_redraw_set_context(c, &ctx); |
|
|
if (c->flags & (CLIENT_REDRAWWINDOW|CLIENT_REDRAWBORDERS)) { |
if (flags & (CLIENT_REDRAWWINDOW|CLIENT_REDRAWBORDERS)) { |
if (ctx.pane_status != CELL_STATUS_OFF) |
if (ctx.pane_status != CELL_STATUS_OFF) |
screen_redraw_draw_pane_status(&ctx); |
screen_redraw_draw_pane_status(&ctx); |
screen_redraw_draw_borders(&ctx); |
screen_redraw_draw_borders(&ctx); |
} |
} |
if (c->flags & CLIENT_REDRAWWINDOW) |
if (flags & CLIENT_REDRAWWINDOW) |
screen_redraw_draw_panes(&ctx); |
screen_redraw_draw_panes(&ctx); |
if (ctx.lines != 0 && (c->flags & CLIENT_REDRAWSTATUS)) |
if (ctx.lines != 0 && |
|
(flags & (CLIENT_REDRAWSTATUS|CLIENT_REDRAWSTATUSALWAYS))) |
screen_redraw_draw_status(&ctx); |
screen_redraw_draw_status(&ctx); |
tty_reset(&c->tty); |
tty_reset(&c->tty); |
} |
} |