=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tty.c,v retrieving revision 1.267 retrieving revision 1.268 diff -c -r1.267 -r1.268 *** src/usr.bin/tmux/tty.c 2017/04/23 18:13:24 1.267 --- src/usr.bin/tmux/tty.c 2017/04/25 18:30:29 1.268 *************** *** 1,4 **** ! /* $OpenBSD: tty.c,v 1.267 2017/04/23 18:13:24 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: tty.c,v 1.268 2017/04/25 18:30:29 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 540,548 **** tty_putn(struct tty *tty, const void *buf, size_t len, u_int width) { tty_add(tty, buf, len); ! if (tty->cx + width > tty->sx) ! tty->cx = tty->cy = UINT_MAX; ! else tty->cx += width; } --- 540,552 ---- tty_putn(struct tty *tty, const void *buf, size_t len, u_int width) { tty_add(tty, buf, len); ! if (tty->cx + width > tty->sx) { ! tty->cx = (tty->cx + width) - tty->sx; ! if (tty->cx <= tty->sx) ! tty->cy++; ! else ! tty->cx = tty->cy = UINT_MAX; ! } else tty->cx += width; } *************** *** 773,790 **** if (sx > tty->sx) sx = tty->sx; ! if (screen_size_x(s) < tty->sx && ! ox == 0 && ! sx != screen_size_x(s) && ! tty_term_has(tty->term, TTYC_EL1) && ! !tty_fake_bce(tty, wp, 8)) { ! tty_default_attributes(tty, wp, 8); ! tty_cursor(tty, screen_size_x(s) - 1, oy + py); ! tty_putcode(tty, TTYC_EL1); ! cleared = 1; ! } ! if (sx != 0) ! tty_cursor(tty, ox, oy + py); memcpy(&last, &grid_default_cell, sizeof last); len = 0; --- 777,802 ---- if (sx > tty->sx) sx = tty->sx; ! if (wp == NULL || ! py == 0 || ! (~s->grid->linedata[s->grid->hsize + py - 1].flags & GRID_LINE_WRAPPED) || ! ox != 0 || ! tty->cx < tty->sx || ! screen_size_x(s) < tty->sx) { ! if (screen_size_x(s) < tty->sx && ! ox == 0 && ! sx != screen_size_x(s) && ! tty_term_has(tty->term, TTYC_EL1) && ! !tty_fake_bce(tty, wp, 8)) { ! tty_default_attributes(tty, wp, 8); ! tty_cursor(tty, screen_size_x(s) - 1, oy + py); ! tty_putcode(tty, TTYC_EL1); ! cleared = 1; ! } ! if (sx != 0) ! tty_cursor(tty, ox, oy + py); ! } else ! log_debug("%s: wrapped line %u", __func__, oy + py); memcpy(&last, &grid_default_cell, sizeof last); len = 0; *************** *** 1477,1483 **** tty_cursor_pane_unless_wrap(struct tty *tty, const struct tty_ctx *ctx, u_int cx, u_int cy) { ! if (!tty_pane_full_width(tty, ctx) || (tty->term->flags & TERM_EARLYWRAP) || ctx->xoff + cx != 0 || ctx->yoff + cy != tty->cy + 1 || --- 1489,1496 ---- tty_cursor_pane_unless_wrap(struct tty *tty, const struct tty_ctx *ctx, u_int cx, u_int cy) { ! if (!ctx->wrapped || ! !tty_pane_full_width(tty, ctx) || (tty->term->flags & TERM_EARLYWRAP) || ctx->xoff + cx != 0 || ctx->yoff + cy != tty->cy + 1 ||