From 1926c1b683e5ab042f70a94b613d09d41fb858db Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 1 May 2025 06:59:32 +0000 Subject: [PATCH] Don't map 256 to white-on-white either, and tidy code a bit. --- tty.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/tty.c b/tty.c index fc74a164..04ebc72d 100644 --- a/tty.c +++ b/tty.c @@ -2760,15 +2760,23 @@ tty_check_fg(struct tty *tty, struct colour_palette *palette, /* Is this a 256-colour colour? */ if (gc->fg & COLOUR_FLAG_256) { /* And not a 256 colour mode? */ - if (colours < 256) { - gc->fg = colour_256to16(gc->fg); - if (gc->fg & 8) { - gc->fg &= 7; - if (colours >= 16) - gc->fg += 90; - else if (gc->fg == 0 && gc->bg == 0) - gc->fg = 7; - } + if (colours >= 256) + return; + gc->fg = colour_256to16(gc->fg); + if (~gc->fg & 8) + return; + gc->fg &= 7; + if (colours >= 16) + gc->fg += 90; + else { + /* + * Mapping to black-on-black or white-on-white is not + * much use, so change the foreground. + */ + if (gc->fg == 0 && gc->bg == 0) + gc->fg = 7; + else if (gc->fg == 7 && gc->bg == 7) + gc->fg = 0; } return; } @@ -2816,14 +2824,14 @@ tty_check_bg(struct tty *tty, struct colour_palette *palette, * palette. Bold background doesn't exist portably, so just * discard the bold bit if set. */ - if (colours < 256) { - gc->bg = colour_256to16(gc->bg); - if (gc->bg & 8) { - gc->bg &= 7; - if (colours >= 16) - gc->bg += 90; - } - } + if (colours >= 256) + return; + gc->bg = colour_256to16(gc->bg); + if (~gc->bg & 8) + return; + gc->bg &= 7; + if (colours >= 16) + gc->bg += 90; return; }