diff options
author | nicm <nicm> | 2017-05-12 11:13:43 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-05-12 11:13:43 +0000 |
commit | 7f626c89595abd5dae6716d6b6e21ea96e22a856 (patch) | |
tree | 9c8a9b88bed6b2a7eaecfbecb3412b94341ed28d /tty.c | |
parent | 886d50dcabf98d7469d982241336593acbb2e6f6 (diff) | |
download | rtmux-7f626c89595abd5dae6716d6b6e21ea96e22a856.tar.gz rtmux-7f626c89595abd5dae6716d6b6e21ea96e22a856.tar.bz2 rtmux-7f626c89595abd5dae6716d6b6e21ea96e22a856.zip |
Can use INDN to clear regions with default background colour if margins
are supported.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -808,6 +808,7 @@ tty_clear_area(struct tty *tty, const struct window_pane *wp, u_int py, /* If genuine BCE is available, can try escape sequences. */ if (!tty_fake_bce(tty, wp, bg)) { + /* Use ED if clearing off the bottom of the terminal. */ if (px == 0 && px + nx >= tty->sx && py + ny >= tty->sy && @@ -818,8 +819,9 @@ tty_clear_area(struct tty *tty, const struct window_pane *wp, u_int py, } /* - * If we're setting a background colour (so it is not default), - * we can use DECFRA. + * On VT420 compatible terminals we can use DECFRA if the + * background colour isn't default (because it doesn't work + * after SGR 0). */ if (tty->term_type == TTY_VT420 && bg != 8) { xsnprintf(tmp, sizeof tmp, "\033[32;%u;%u;%u;%u$x", @@ -827,6 +829,17 @@ tty_clear_area(struct tty *tty, const struct window_pane *wp, u_int py, tty_puts(tty, tmp); return; } + + /* + * If margins are supported, can just scroll the area off to + * clear it. + */ + if (tty_use_margin(tty) && tty_term_has(tty->term, TTYC_INDN)) { + tty_region(tty, py, py + ny - 1); + tty_margin(tty, px, px + nx - 1); + tty_putcode1(tty, TTYC_INDN, ny); + return; + } } /* Couldn't use an escape sequence, loop over the lines. */ |