render: cursor: use default fg/bg if cell fg/bg are the same

When deciding which colors to use for the cursor, and the cursor text
and background colors are the same, use the default fg/bg instead.

Closes #1761
This commit is contained in:
Daniel Eklöf 2024-07-13 10:19:53 +02:00
parent f066fe47f0
commit c46c124363
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 14 additions and 0 deletions

View file

@ -84,8 +84,14 @@
In other words, if, after this change, `XTGETTCAP` returns a string
that is different compared to `tigetstr()`, then it is likely a bug
in foot's implementation of `XTGETTCAP`.
* If the cursor foreground and background colors are identical (for
example, when cursor uses inverted colors and the cell's foreground
and background are the same), the cursor will instead be rendered
using the default foreground and background colors, inverted
([#1761][1761]).
[1701]: https://codeberg.org/dnkl/foot/issues/1701
[1761]: https://codeberg.org/dnkl/foot/issues/1761
### Deprecated

View file

@ -573,6 +573,14 @@ cursor_colors_for_cell(const struct terminal *term, const struct cell *cell,
*text_color = color_hex_to_pixman(term->colors.bg);
}
}
if (text_color->red == cursor_color->red &&
text_color->green == cursor_color->green &&
text_color->blue == cursor_color->blue)
{
*text_color = color_hex_to_pixman(term->colors.bg);
*cursor_color = color_hex_to_pixman(term->colors.fg);
}
}
static void