mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:07:38 +00:00 
			
		
		
		
	Add a client redraw-window flag instead of the redraw-all flag and for
all just use the three flags together (window, borders, status).
This commit is contained in:
		@@ -318,7 +318,7 @@ screen_redraw_make_pane_status(struct client *c, struct window *w,
 | 
			
		||||
static void
 | 
			
		||||
screen_redraw_draw_pane_status(struct screen_redraw_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
	struct client           *c = ctx->c;
 | 
			
		||||
	struct client		*c = ctx->c;
 | 
			
		||||
	struct window		*w = c->session->curw->window;
 | 
			
		||||
	struct options		*oo = c->session->options;
 | 
			
		||||
	struct tty		*tty = &c->tty;
 | 
			
		||||
@@ -344,7 +344,7 @@ screen_redraw_draw_pane_status(struct screen_redraw_ctx *ctx)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Update status line and change flags if unchanged. */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
screen_redraw_update(struct client *c)
 | 
			
		||||
{
 | 
			
		||||
	struct window		*w = c->session->curw->window;
 | 
			
		||||
@@ -359,7 +359,7 @@ screen_redraw_update(struct client *c)
 | 
			
		||||
	else
 | 
			
		||||
		redraw = status_redraw(c);
 | 
			
		||||
	if (!redraw)
 | 
			
		||||
		c->flags &= ~CLIENT_STATUS;
 | 
			
		||||
		c->flags &= ~CLIENT_REDRAWSTATUS;
 | 
			
		||||
 | 
			
		||||
	if (options_get_number(wo, "pane-border-status") != CELL_STATUS_OFF) {
 | 
			
		||||
		redraw = 0;
 | 
			
		||||
@@ -368,7 +368,7 @@ screen_redraw_update(struct client *c)
 | 
			
		||||
				redraw = 1;
 | 
			
		||||
		}
 | 
			
		||||
		if (redraw)
 | 
			
		||||
			c->flags |= CLIENT_BORDERS;
 | 
			
		||||
			c->flags |= CLIENT_REDRAWBORDERS;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -376,10 +376,10 @@ screen_redraw_update(struct client *c)
 | 
			
		||||
static void
 | 
			
		||||
screen_redraw_set_context(struct client *c, struct screen_redraw_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
	struct session  *s = c->session;
 | 
			
		||||
	struct options  *oo = s->options;
 | 
			
		||||
	struct window   *w = s->curw->window;
 | 
			
		||||
	struct options  *wo = w->options;
 | 
			
		||||
	struct session	*s = c->session;
 | 
			
		||||
	struct options	*oo = s->options;
 | 
			
		||||
	struct window	*w = s->curw->window;
 | 
			
		||||
	struct options	*wo = w->options;
 | 
			
		||||
 | 
			
		||||
	memset(ctx, 0, sizeof *ctx);
 | 
			
		||||
	ctx->c = c;
 | 
			
		||||
@@ -395,26 +395,24 @@ screen_redraw_set_context(struct client *c, struct screen_redraw_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
/* Redraw entire screen. */
 | 
			
		||||
void
 | 
			
		||||
screen_redraw_screen(struct client *c, int draw_panes, int draw_status,
 | 
			
		||||
    int draw_borders)
 | 
			
		||||
screen_redraw_screen(struct client *c)
 | 
			
		||||
{
 | 
			
		||||
	struct screen_redraw_ctx	 ctx;
 | 
			
		||||
	struct screen_redraw_ctx	ctx;
 | 
			
		||||
 | 
			
		||||
	if (c->flags & CLIENT_SUSPENDED)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	screen_redraw_update(c);
 | 
			
		||||
	screen_redraw_set_context(c, &ctx);
 | 
			
		||||
 | 
			
		||||
	if (ctx.lines == 0)
 | 
			
		||||
		draw_status = 0;
 | 
			
		||||
 | 
			
		||||
	if (draw_borders)
 | 
			
		||||
	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 (draw_borders && ctx.pane_status != CELL_STATUS_OFF)
 | 
			
		||||
		screen_redraw_draw_pane_status(&ctx);
 | 
			
		||||
	if (draw_panes)
 | 
			
		||||
	}
 | 
			
		||||
	if (c->flags & CLIENT_REDRAWWINDOW)
 | 
			
		||||
		screen_redraw_draw_panes(&ctx);
 | 
			
		||||
	if (draw_status)
 | 
			
		||||
	if (ctx.lines != 0 && (c->flags & CLIENT_REDRAWSTATUS))
 | 
			
		||||
		screen_redraw_draw_status(&ctx);
 | 
			
		||||
	tty_reset(&c->tty);
 | 
			
		||||
}
 | 
			
		||||
@@ -447,15 +445,15 @@ screen_redraw_draw_borders_cell(struct screen_redraw_ctx *ctx, u_int x, u_int y,
 | 
			
		||||
    struct grid_cell *active_gc, struct grid_cell *m_other_gc,
 | 
			
		||||
    struct grid_cell *other_gc)
 | 
			
		||||
{
 | 
			
		||||
	struct client           *c = ctx->c;
 | 
			
		||||
	struct session          *s = c->session;
 | 
			
		||||
	struct window           *w = s->curw->window;
 | 
			
		||||
	struct tty              *tty = &c->tty;
 | 
			
		||||
	struct window_pane      *wp;
 | 
			
		||||
	struct window_pane      *active = w->active;
 | 
			
		||||
	struct window_pane      *marked = marked_pane.wp;
 | 
			
		||||
	u_int                    type;
 | 
			
		||||
	int                      flag, pane_status = ctx->pane_status;
 | 
			
		||||
	struct client		*c = ctx->c;
 | 
			
		||||
	struct session		*s = c->session;
 | 
			
		||||
	struct window		*w = s->curw->window;
 | 
			
		||||
	struct tty		*tty = &c->tty;
 | 
			
		||||
	struct window_pane	*wp;
 | 
			
		||||
	struct window_pane	*active = w->active;
 | 
			
		||||
	struct window_pane	*marked = marked_pane.wp;
 | 
			
		||||
	u_int			 type;
 | 
			
		||||
	int			 flag, pane_status = ctx->pane_status;
 | 
			
		||||
 | 
			
		||||
	type = screen_redraw_check_cell(c, x, y, pane_status, &wp);
 | 
			
		||||
	if (type == CELL_INSIDE)
 | 
			
		||||
@@ -492,7 +490,7 @@ screen_redraw_draw_borders(struct screen_redraw_ctx *ctx)
 | 
			
		||||
	struct tty		*tty = &c->tty;
 | 
			
		||||
	struct grid_cell	 m_active_gc, active_gc, m_other_gc, other_gc;
 | 
			
		||||
	struct grid_cell	 msg_gc;
 | 
			
		||||
	u_int		 	 i, j, msgx = 0, msgy = 0;
 | 
			
		||||
	u_int			 i, j, msgx = 0, msgy = 0;
 | 
			
		||||
	int			 small, flags;
 | 
			
		||||
	char			 msg[256];
 | 
			
		||||
	const char		*tmp;
 | 
			
		||||
@@ -558,7 +556,7 @@ screen_redraw_draw_panes(struct screen_redraw_ctx *ctx)
 | 
			
		||||
	struct window		*w = c->session->curw->window;
 | 
			
		||||
	struct tty		*tty = &c->tty;
 | 
			
		||||
	struct window_pane	*wp;
 | 
			
		||||
	u_int		 	 i, y;
 | 
			
		||||
	u_int			 i, y;
 | 
			
		||||
 | 
			
		||||
	if (ctx->top)
 | 
			
		||||
		y = ctx->lines;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user