Don't map 256 to white-on-white either, and tidy code a bit.

This commit is contained in:
nicm
2025-05-01 06:59:32 +00:00
parent b0b6a6f665
commit 1926c1b683

42
tty.c
View File

@ -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;
}