Tweak previous not to replace complete characters with spaces.
authornicm <nicm@openbsd.org>
Fri, 6 Aug 2021 03:29:15 +0000 (03:29 +0000)
committernicm <nicm@openbsd.org>
Fri, 6 Aug 2021 03:29:15 +0000 (03:29 +0000)
usr.bin/tmux/tty.c

index 58259f0..bd42793 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.395 2021/08/06 03:13:05 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.396 2021/08/06 03:29:15 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1348,8 +1348,8 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
        const struct grid_cell  *gcp;
        struct grid_line        *gl;
        struct client           *c = tty->client;
-       u_int                    i, j, ux, sx, width;
-       int                      flags, cleared = 0, wrapped = 0, hidden;
+       u_int                    i, j, ux, sx, width, hidden;
+       int                      flags, cleared = 0, wrapped = 0;
        char                     buf[512];
        size_t                   len;
        u_int                    cellsize;
@@ -1452,12 +1452,13 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int px, u_int py, u_int nx,
 
                hidden = 0;
                for (j = 0; j < gcp->data.width; j++) {
-                       if (!tty_check_overlay(tty, atx + ux + j, aty)) {
-                               hidden = 1;
-                               break;
-                       }
+                       if (!tty_check_overlay(tty, atx + ux + j, aty))
+                               hidden++;
                }
-               if (hidden || ux + gcp->data.width > nx) {
+               if (hidden != 0 && hidden == gcp->data.width) {
+                       if (~gcp->flags & GRID_FLAG_PADDING)
+                               ux += gcp->data.width;
+               } else if (hidden != 0 || ux + gcp->data.width > nx) {
                        if (~gcp->flags & GRID_FLAG_PADDING) {
                                tty_attributes(tty, &last, defaults, palette);
                                tty_cursor(tty, atx + ux, aty);