mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:17:31 +00:00 
			
		
		
		
	Fix HPA in origin mode.
This commit is contained in:
		
							
								
								
									
										4
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								input.c
									
									
									
									
									
								
							@@ -1447,7 +1447,7 @@ input_csi_dispatch(struct input_ctx *ictx)
 | 
			
		||||
	case INPUT_CSI_HPA:
 | 
			
		||||
		n = input_get(ictx, 0, 1, 1);
 | 
			
		||||
		if (n != -1)
 | 
			
		||||
			screen_write_cursormove(sctx, n - 1, s->cy);
 | 
			
		||||
			screen_write_cursormove(sctx, n - 1, -1);
 | 
			
		||||
		break;
 | 
			
		||||
	case INPUT_CSI_ICH:
 | 
			
		||||
		n = input_get(ictx, 0, 1, 1);
 | 
			
		||||
@@ -1519,7 +1519,7 @@ input_csi_dispatch(struct input_ctx *ictx)
 | 
			
		||||
	case INPUT_CSI_VPA:
 | 
			
		||||
		n = input_get(ictx, 0, 1, 1);
 | 
			
		||||
		if (n != -1)
 | 
			
		||||
			screen_write_cursormove(sctx, s->cx, n - 1);
 | 
			
		||||
			screen_write_cursormove(sctx, -1, n - 1);
 | 
			
		||||
		break;
 | 
			
		||||
	case INPUT_CSI_DECSCUSR:
 | 
			
		||||
		n = input_get(ictx, 0, 0, 0);
 | 
			
		||||
 
 | 
			
		||||
@@ -1034,20 +1034,20 @@ screen_write_clearstartofline(struct screen_write_ctx *ctx, u_int bg)
 | 
			
		||||
 | 
			
		||||
/* Move cursor to px,py. */
 | 
			
		||||
void
 | 
			
		||||
screen_write_cursormove(struct screen_write_ctx *ctx, u_int px, u_int py)
 | 
			
		||||
screen_write_cursormove(struct screen_write_ctx *ctx, int px, int py)
 | 
			
		||||
{
 | 
			
		||||
	struct screen	*s = ctx->s;
 | 
			
		||||
 | 
			
		||||
	if (s->mode & MODE_ORIGIN) {
 | 
			
		||||
		if (py > s->rlower - s->rupper)
 | 
			
		||||
	if (py != -1 && (s->mode & MODE_ORIGIN)) {
 | 
			
		||||
		if ((u_int)py > s->rlower - s->rupper)
 | 
			
		||||
			py = s->rlower;
 | 
			
		||||
		else
 | 
			
		||||
			py += s->rupper;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (px > screen_size_x(s) - 1)
 | 
			
		||||
	if (px != -1 && (u_int)px > screen_size_x(s) - 1)
 | 
			
		||||
		px = screen_size_x(s) - 1;
 | 
			
		||||
	if (py > screen_size_y(s) - 1)
 | 
			
		||||
	if (py != -1 && (u_int)py > screen_size_y(s) - 1)
 | 
			
		||||
		py = screen_size_y(s) - 1;
 | 
			
		||||
 | 
			
		||||
	screen_write_set_cursor(ctx, px, py);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							@@ -2100,7 +2100,7 @@ void	 screen_write_deleteline(struct screen_write_ctx *, u_int, u_int);
 | 
			
		||||
void	 screen_write_clearline(struct screen_write_ctx *, u_int);
 | 
			
		||||
void	 screen_write_clearendofline(struct screen_write_ctx *, u_int);
 | 
			
		||||
void	 screen_write_clearstartofline(struct screen_write_ctx *, u_int);
 | 
			
		||||
void	 screen_write_cursormove(struct screen_write_ctx *, u_int, u_int);
 | 
			
		||||
void	 screen_write_cursormove(struct screen_write_ctx *, int, int);
 | 
			
		||||
void	 screen_write_reverseindex(struct screen_write_ctx *, u_int);
 | 
			
		||||
void	 screen_write_scrollregion(struct screen_write_ctx *, u_int, u_int);
 | 
			
		||||
void	 screen_write_linefeed(struct screen_write_ctx *, int, u_int);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user