mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Cleanup: use two functions for region setting, one for absolute and one inside
pane.
This commit is contained in:
		
							
								
								
									
										3
									
								
								server.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								server.c
									
									
									
									
									
								
							@@ -1050,8 +1050,9 @@ server_handle_client(struct client *c)
 | 
			
		||||
	 * tty_region/tty_reset/tty_update_mode already take care of not
 | 
			
		||||
	 * resetting things that are already in their default state.
 | 
			
		||||
	 */
 | 
			
		||||
	tty_region_absolute(&c->tty, 0, c->tty.sy - 1);
 | 
			
		||||
 | 
			
		||||
	status = options_get_number(oo, "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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1247,7 +1247,8 @@ void	tty_raw(struct tty *, const char *);
 | 
			
		||||
u_char	tty_get_acs(struct tty *, u_char);
 | 
			
		||||
void	tty_attributes(struct tty *, const struct grid_cell *);
 | 
			
		||||
void	tty_reset(struct tty *);
 | 
			
		||||
void	tty_region(struct tty *, u_int, u_int, u_int);
 | 
			
		||||
void	tty_region_pane(struct tty *, const struct tty_ctx *, u_int, u_int);
 | 
			
		||||
void	tty_region_absolute(struct tty *, u_int, u_int);
 | 
			
		||||
void	tty_cursor(struct tty *, u_int, u_int, u_int, u_int);
 | 
			
		||||
void	tty_putcode(struct tty *, enum tty_code_code);
 | 
			
		||||
void	tty_putcode1(struct tty *, enum tty_code_code, int);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										51
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								tty.c
									
									
									
									
									
								
							@@ -579,7 +579,7 @@ tty_cmd_insertline(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
 	tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff);
 | 
			
		||||
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 | 
			
		||||
 | 
			
		||||
 	tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff);
 | 
			
		||||
	tty_emulate_repeat(tty, TTYC_IL, TTYC_IL1, ctx->num);
 | 
			
		||||
@@ -599,7 +599,7 @@ tty_cmd_deleteline(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
 	tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff);
 | 
			
		||||
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 | 
			
		||||
 | 
			
		||||
 	tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff);
 | 
			
		||||
	tty_emulate_repeat(tty, TTYC_DL, TTYC_DL1, ctx->num);
 | 
			
		||||
@@ -675,8 +675,10 @@ tty_cmd_reverseindex(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	if (ctx->ocy == ctx->orupper) {
 | 
			
		||||
		tty_reset(tty);
 | 
			
		||||
		tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff);
 | 
			
		||||
 | 
			
		||||
		tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 | 
			
		||||
		tty_cursor(tty, ctx->ocx, ctx->orupper, wp->xoff, wp->yoff);
 | 
			
		||||
 | 
			
		||||
		tty_putcode(tty, TTYC_RI);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -695,8 +697,10 @@ tty_cmd_linefeed(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	if (ctx->ocy == ctx->orlower) {
 | 
			
		||||
		tty_reset(tty);
 | 
			
		||||
		tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff);
 | 
			
		||||
 | 
			
		||||
		tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 | 
			
		||||
		tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff);
 | 
			
		||||
 | 
			
		||||
		tty_putc(tty, '\n');
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -710,8 +714,9 @@ tty_cmd_clearendofscreen(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
	tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff);
 | 
			
		||||
	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 | 
			
		||||
	tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff);
 | 
			
		||||
 | 
			
		||||
	if (wp->xoff == 0 && screen_size_x(s) >= tty->sx &&
 | 
			
		||||
	    tty_term_has(tty->term, TTYC_EL)) {
 | 
			
		||||
		tty_putcode(tty, TTYC_EL);
 | 
			
		||||
@@ -745,8 +750,9 @@ tty_cmd_clearstartofscreen(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
	tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff);
 | 
			
		||||
	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 | 
			
		||||
	tty_cursor(tty, 0, 0, wp->xoff, wp->yoff);
 | 
			
		||||
 | 
			
		||||
	if (wp->xoff == 0 && screen_size_x(s) >= tty->sx &&
 | 
			
		||||
	    tty_term_has(tty->term, TTYC_EL)) {
 | 
			
		||||
		for (i = 0; i < ctx->ocy; i++) {
 | 
			
		||||
@@ -774,8 +780,9 @@ tty_cmd_clearscreen(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
	tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff);
 | 
			
		||||
	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 | 
			
		||||
	tty_cursor(tty, 0, 0, wp->xoff, wp->yoff);
 | 
			
		||||
 | 
			
		||||
	if (wp->xoff == 0 && screen_size_x(s) >= tty->sx &&
 | 
			
		||||
	    tty_term_has(tty->term, TTYC_EL)) {
 | 
			
		||||
		for (i = 0; i < screen_size_y(s); i++) {
 | 
			
		||||
@@ -803,7 +810,7 @@ tty_cmd_alignmenttest(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	tty_reset(tty);
 | 
			
		||||
 | 
			
		||||
	tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff);
 | 
			
		||||
	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 | 
			
		||||
 | 
			
		||||
	for (j = 0; j < screen_size_y(s); j++) {
 | 
			
		||||
		tty_cursor(tty, 0, j, wp->xoff, wp->yoff);
 | 
			
		||||
@@ -887,17 +894,29 @@ tty_reset(struct tty *tty)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tty_region(struct tty *tty, u_int rupper, u_int rlower, u_int oy)
 | 
			
		||||
tty_region_pane(
 | 
			
		||||
    struct tty *tty, const struct tty_ctx *ctx, u_int rupper, u_int rlower)
 | 
			
		||||
{
 | 
			
		||||
  	struct window_pane	*wp = ctx->wp;
 | 
			
		||||
 | 
			
		||||
	tty_region_absolute(tty, wp->yoff + rupper, wp->yoff + rlower);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tty_region_absolute(struct tty *tty, u_int rupper, u_int rlower)
 | 
			
		||||
{
 | 
			
		||||
	if (tty->rlower == rlower && tty->rupper == rupper)
 | 
			
		||||
		return;
 | 
			
		||||
	if (!tty_term_has(tty->term, TTYC_CSR))
 | 
			
		||||
		return;
 | 
			
		||||
	if (tty->rlower != oy + rlower || tty->rupper != oy + rupper) {
 | 
			
		||||
		tty->rlower = oy + rlower;
 | 
			
		||||
		tty->rupper = oy + rupper;
 | 
			
		||||
		tty->cx = 0;
 | 
			
		||||
	 	tty->cy = 0;
 | 
			
		||||
		tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tty->rupper = rupper;
 | 
			
		||||
	tty->rlower = rlower;
 | 
			
		||||
	
 | 
			
		||||
	tty->cx = 0;
 | 
			
		||||
	tty->cy = 0;
 | 
			
		||||
 | 
			
		||||
	tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user