diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-04-28 20:01:14 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-04-28 20:01:14 +0100 |
commit | 14cb489a3ba32409e06a4c704d87096656897ec3 (patch) | |
tree | 6dfc8fecdc91575a5504f60fe8bd3564304c7019 | |
parent | 99b0f48b2e9cffba85868cf299c1670babc3b9bb (diff) | |
parent | 54e2205e545d72d8d9ccaadfd4d1212bafb2f41b (diff) | |
download | rtmux-14cb489a3ba32409e06a4c704d87096656897ec3.tar.gz rtmux-14cb489a3ba32409e06a4c704d87096656897ec3.tar.bz2 rtmux-14cb489a3ba32409e06a4c704d87096656897ec3.zip |
Merge branch 'obsd-master'
-rw-r--r-- | tty.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -1117,7 +1117,7 @@ void tty_cmd_scrollup(struct tty *tty, const struct tty_ctx *ctx) { struct window_pane *wp = ctx->wp; - u_int i; + u_int i, lines; if ((!tty_pane_full_width(tty, ctx) && !tty_use_margin(tty)) || tty_fake_bce(tty, wp, 8) || @@ -1131,12 +1131,21 @@ tty_cmd_scrollup(struct tty *tty, const struct tty_ctx *ctx) tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); tty_margin_pane(tty, ctx); - if (ctx->num == 1 || !tty_term_has(tty->term, TTYC_INDN)) { + /* + * Konsole has a bug where it will ignore SU if the parameter is more + * than the height of the scroll region. Clamping the parameter doesn't + * hurt in any case. + */ + lines = tty->rlower - tty->rupper; + if (lines > ctx->num) + lines = ctx->num; + + if (lines == 1 || !tty_term_has(tty->term, TTYC_INDN)) { tty_cursor(tty, tty->rright, tty->rlower); - for (i = 0; i < ctx->num; i++) + for (i = 0; i < lines; i++) tty_putc(tty, '\n'); } else - tty_putcode1(tty, TTYC_INDN, ctx->num); + tty_putcode1(tty, TTYC_INDN, lines); } void |