mirror of
https://github.com/tmux/tmux.git
synced 2025-01-07 16:28:48 +00:00
Fix HPA in origin mode.
This commit is contained in:
parent
f3f534a3a0
commit
2796ae81d0
4
input.c
4
input.c
@ -1447,7 +1447,7 @@ input_csi_dispatch(struct input_ctx *ictx)
|
|||||||
case INPUT_CSI_HPA:
|
case INPUT_CSI_HPA:
|
||||||
n = input_get(ictx, 0, 1, 1);
|
n = input_get(ictx, 0, 1, 1);
|
||||||
if (n != -1)
|
if (n != -1)
|
||||||
screen_write_cursormove(sctx, n - 1, s->cy);
|
screen_write_cursormove(sctx, n - 1, -1);
|
||||||
break;
|
break;
|
||||||
case INPUT_CSI_ICH:
|
case INPUT_CSI_ICH:
|
||||||
n = input_get(ictx, 0, 1, 1);
|
n = input_get(ictx, 0, 1, 1);
|
||||||
@ -1519,7 +1519,7 @@ input_csi_dispatch(struct input_ctx *ictx)
|
|||||||
case INPUT_CSI_VPA:
|
case INPUT_CSI_VPA:
|
||||||
n = input_get(ictx, 0, 1, 1);
|
n = input_get(ictx, 0, 1, 1);
|
||||||
if (n != -1)
|
if (n != -1)
|
||||||
screen_write_cursormove(sctx, s->cx, n - 1);
|
screen_write_cursormove(sctx, -1, n - 1);
|
||||||
break;
|
break;
|
||||||
case INPUT_CSI_DECSCUSR:
|
case INPUT_CSI_DECSCUSR:
|
||||||
n = input_get(ictx, 0, 0, 0);
|
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. */
|
/* Move cursor to px,py. */
|
||||||
void
|
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;
|
struct screen *s = ctx->s;
|
||||||
|
|
||||||
if (s->mode & MODE_ORIGIN) {
|
if (py != -1 && (s->mode & MODE_ORIGIN)) {
|
||||||
if (py > s->rlower - s->rupper)
|
if ((u_int)py > s->rlower - s->rupper)
|
||||||
py = s->rlower;
|
py = s->rlower;
|
||||||
else
|
else
|
||||||
py += s->rupper;
|
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;
|
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;
|
py = screen_size_y(s) - 1;
|
||||||
|
|
||||||
screen_write_set_cursor(ctx, px, py);
|
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_clearline(struct screen_write_ctx *, u_int);
|
||||||
void screen_write_clearendofline(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_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_reverseindex(struct screen_write_ctx *, u_int);
|
||||||
void screen_write_scrollregion(struct screen_write_ctx *, u_int, 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);
|
void screen_write_linefeed(struct screen_write_ctx *, int, u_int);
|
||||||
|
Loading…
Reference in New Issue
Block a user