diff options
author | nicm <nicm> | 2019-03-12 18:30:08 +0000 |
---|---|---|
committer | nicm <nicm> | 2019-03-12 18:30:08 +0000 |
commit | 2796ae81d0be04df161cffdf447c2d0e5ec895e2 (patch) | |
tree | 8290bc3f82b974e0bf2c8c9948388b1763826383 | |
parent | f3f534a3a0361ed11d0fc455f9a42ba82e6aa471 (diff) | |
download | rtmux-2796ae81d0be04df161cffdf447c2d0e5ec895e2.tar.gz rtmux-2796ae81d0be04df161cffdf447c2d0e5ec895e2.tar.bz2 rtmux-2796ae81d0be04df161cffdf447c2d0e5ec895e2.zip |
Fix HPA in origin mode.
-rw-r--r-- | input.c | 4 | ||||
-rw-r--r-- | screen-write.c | 10 | ||||
-rw-r--r-- | tmux.h | 2 |
3 files changed, 8 insertions, 8 deletions
@@ -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); diff --git a/screen-write.c b/screen-write.c index a6e78f42..c9cba2bd 100644 --- a/screen-write.c +++ b/screen-write.c @@ -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); @@ -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); |