Use 8 for underscore colour defaults instead of 0 which is less
authornicm <nicm@openbsd.org>
Thu, 13 Jul 2023 06:03:48 +0000 (06:03 +0000)
committernicm <nicm@openbsd.org>
Thu, 13 Jul 2023 06:03:48 +0000 (06:03 +0000)
confusing, and fix writing tge default colour. GitHub issue 3627.

usr.bin/tmux/grid.c
usr.bin/tmux/input.c
usr.bin/tmux/tty.c

index 17c9e75..faf9dac 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: grid.c,v 1.129 2023/06/30 21:55:08 nicm Exp $ */
+/* $OpenBSD: grid.c,v 1.130 2023/07/13 06:03:48 nicm Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -37,7 +37,7 @@
 
 /* Default grid cell data. */
 const struct grid_cell grid_default_cell = {
-       { { ' ' }, 0, 1, 1 }, 0, 0, 8, 8, 0, 0
+       { { ' ' }, 0, 1, 1 }, 0, 0, 8, 8, 8, 0
 };
 
 /*
@@ -45,12 +45,12 @@ const struct grid_cell grid_default_cell = {
  * appears in the grid - because of this, they are always extended cells.
  */
 static const struct grid_cell grid_padding_cell = {
-       { { '!' }, 0, 0, 0 }, 0, GRID_FLAG_PADDING, 8, 8, 0, 0
+       { { '!' }, 0, 0, 0 }, 0, GRID_FLAG_PADDING, 8, 8, 8, 0
 };
 
 /* Cleared grid cell data. */
 static const struct grid_cell grid_cleared_cell = {
-       { { ' ' }, 0, 1, 1 }, 0, GRID_FLAG_CLEARED, 8, 8, 0, 0
+       { { ' ' }, 0, 1, 1 }, 0, GRID_FLAG_CLEARED, 8, 8, 8, 0
 };
 static const struct grid_cell_entry grid_cleared_entry = {
        { .data = { 0, 8, 8, ' ' } }, GRID_FLAG_CLEARED
@@ -528,7 +528,7 @@ grid_get_cell1(struct grid_line *gl, u_int px, struct grid_cell *gc)
        gc->bg = gce->data.bg;
        if (gce->flags & GRID_FLAG_BG256)
                gc->bg |= COLOUR_FLAG_256;
-       gc->us = 0;
+       gc->us = 8;
        utf8_set(&gc->data, gce->data.data);
        gc->link = 0;
 }
@@ -956,7 +956,7 @@ grid_string_cells_code(const struct grid_cell *lastgc,
        for (i = 0; i < nitems(attrs); i++) {
                if (((~attr & attrs[i].mask) &&
                    (lastattr & attrs[i].mask)) ||
-                   (lastgc->us != 0 && gc->us == 0)) {
+                   (lastgc->us != 8 && gc->us == 8)) {
                        s[n++] = 0;
                        lastattr &= GRID_ATTR_CHARSET;
                        break;
index fcc9b26..2157dac 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.217 2023/07/03 16:47:43 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.218 2023/07/13 06:03:48 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2186,7 +2186,7 @@ input_csi_dispatch_sgr(struct input_ctx *ictx)
                        gc->attr &= ~GRID_ATTR_OVERLINE;
                        break;
                case 59:
-                       gc->us = 0;
+                       gc->us = 8;
                        break;
                case 90:
                case 91:
index 5aef5de..94b33ce 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.431 2023/06/26 07:17:40 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.432 2023/07/13 06:03:48 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2815,9 +2815,10 @@ tty_check_us(__unused struct tty *tty, struct colour_palette *palette,
        }
 
        /* Underscore colour is set as RGB so convert. */
-       gc->us = colour_force_rgb (gc->us);
-       if (gc->us == -1)
+       if ((c = colour_force_rgb (gc->us)) == -1)
                gc->us = 8;
+       else
+               gc->us = c;
 }
 
 static void
@@ -2892,7 +2893,7 @@ tty_colours_us(struct tty *tty, const struct grid_cell *gc)
        u_char                   r, g, b;
 
        /* Clear underline colour. */
-       if (gc->us == 0) {
+       if (COLOUR_DEFAULT(gc->us)) {
                tty_putcode(tty, TTYC_OL);
                goto save;
        }