diff options
author | nicm <nicm> | 2019-05-30 07:42:41 +0000 |
---|---|---|
committer | nicm <nicm> | 2019-05-30 07:42:41 +0000 |
commit | 89d2c7eb2625804060092330f22ea211c2c97ba3 (patch) | |
tree | d1079fae20dd4de049f45a106fa9c667feeae040 /tty.c | |
parent | 7dced376737ef685e09fd5a49161ca2bf423e91b (diff) | |
download | rtmux-89d2c7eb2625804060092330f22ea211c2c97ba3.tar.gz rtmux-89d2c7eb2625804060092330f22ea211c2c97ba3.tar.bz2 rtmux-89d2c7eb2625804060092330f22ea211c2c97ba3.zip |
I had hoped that non-xenl terminals had died out, at least in fairly
modern OSs, but no - DragonFly BSD's console returns to haunt us. Fix it
at least somewhat. GitHub issue 1763.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -527,6 +527,12 @@ tty_putc(struct tty *tty, u_char ch) { const char *acs; + if ((tty->term->flags & TERM_EARLYWRAP) && + ch >= 0x20 && ch != 0x7f && + tty->cy == tty->sy - 1 && + tty->cx + 1 >= tty->sx) + return; + if (tty->cell.attr & GRID_ATTR_CHARSET) { acs = tty_acs_get(tty, ch); if (acs != NULL) @@ -557,6 +563,11 @@ tty_putc(struct tty *tty, u_char ch) void tty_putn(struct tty *tty, const void *buf, size_t len, u_int width) { + if ((tty->term->flags & TERM_EARLYWRAP) && + tty->cy == tty->sy - 1 && + tty->cx + len >= tty->sx) + len = tty->sx - tty->cx - 1; + tty_add(tty, buf, len); if (tty->cx + width > tty->sx) { tty->cx = (tty->cx + width) - tty->sx; |