From 886160ba891e2ebe7b654ec29a359a1bf3a5ba7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 23 Apr 2021 21:30:47 +0200 Subject: [PATCH] render: modify background color for highlighted text when fg == bg When rendering a selected/highlighted cell where the foreground and background colors are the same, invert the background color to make the selected text legible. Closes #455 --- CHANGELOG.md | 4 ++++ render.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c329882f..74d29d3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,10 @@ * `generate-alt-random-writes.py --sixel`: width and height of emitted sixels has been adjusted. * _Concealed_ text (`\E[8m`) is now revealed when highlighted. +* The background color of highlighted text is now adjusted, when the + foreground and background colors are the same, making the + highlighted text legible + (https://codeberg.org/dnkl/foot/issues/455). ### Deprecated diff --git a/render.c b/render.c index bee7108f..faa04183 100644 --- a/render.c +++ b/render.c @@ -443,6 +443,11 @@ render_cell(struct terminal *term, pixman_image_t *pix, } } + if (unlikely(is_selected && _fg == _bg)) { + /* Invert bg when selected/highlighted text has same fg/bg */ + _bg = ~_bg; + } + if (cell->attrs.dim) _fg = color_dim(_fg); if (term->conf->bold_in_bright.enabled && cell->attrs.bold)