mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
render: cursor color: remove assertion that both cursor fg/bg be set
Before this patch, we asserted both the cursor foreground, and background colors had been set. This is true in most cases; the config system enforces it. It is however possible to set only the cursor background color, while leaving the foreground (text) color unset: * Use a foot config that does *not* configure the cursor colors. This means foot will invert the default fg/bg colors when rendering the cursor. * Override the cursor color using an OSC-12 sequence. OSC-12 only sets the background color of the cursor, and there is no other OSC sequence to set the cursor's text color. To handle this, remove the assertion, and simply split the logic for the cursor backgound and foreground colors: * Use the configured background color if set (either through config or OSC-12), otherwise use the default foreground color. * Use the configured foreground color if set (through config), otherwise use the default background color.
This commit is contained in:
parent
94b9014f95
commit
7341ba5ee3
2 changed files with 9 additions and 5 deletions
|
|
@ -103,6 +103,9 @@
|
|||
* VS15 being ignored ([#1742][1742]).
|
||||
* VS16 being ignored for a subset of the valid VS16 sequences
|
||||
([#1742][1742]).
|
||||
* Crash in debug builds, when using OSC-12 to set the cursor color and
|
||||
foot config has not set any custom cursor colors (i.e. without
|
||||
OSC-12, inverted fg/bg would be used).
|
||||
|
||||
[1694]: https://codeberg.org/dnkl/foot/issues/1694
|
||||
[1717]: https://codeberg.org/dnkl/foot/issues/1717
|
||||
|
|
|
|||
11
render.c
11
render.c
|
|
@ -556,13 +556,14 @@ cursor_colors_for_cell(const struct terminal *term, const struct cell *cell,
|
|||
const pixman_color_t *fg, const pixman_color_t *bg,
|
||||
pixman_color_t *cursor_color, pixman_color_t *text_color)
|
||||
{
|
||||
if (term->cursor_color.cursor >> 31) {
|
||||
xassert(term->cursor_color.text >> 31);
|
||||
|
||||
if (term->cursor_color.cursor >> 31)
|
||||
*cursor_color = color_hex_to_pixman(term->cursor_color.cursor);
|
||||
*text_color = color_hex_to_pixman(term->cursor_color.text);
|
||||
} else {
|
||||
else
|
||||
*cursor_color = *fg;
|
||||
|
||||
if (term->cursor_color.text >> 31)
|
||||
*text_color = color_hex_to_pixman(term->cursor_color.text);
|
||||
else {
|
||||
*text_color = *bg;
|
||||
|
||||
if (unlikely(text_color->alpha != 0xffff)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue