render: apply opacity correctly when in reverse video mode

This commit is contained in:
Daniel Eklöf 2020-10-08 19:53:11 +02:00
parent 5aa170b9f6
commit a53e8c2866
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 9 additions and 2 deletions

View file

@ -45,6 +45,7 @@
speed too slow (https://codeberg.org/dnkl/foot/issues/144).
* Crash when `foot.ini` contains an invalid section name
(https://codeberg.org/dnkl/foot/issues/159).
* Background opacity when in _reverse video_ mode.
### Security

View file

@ -403,7 +403,9 @@ render_cell(struct terminal *term, pixman_image_t *pix,
pixman_color_t fg = color_hex_to_pixman(_fg);
pixman_color_t bg = color_hex_to_pixman_with_alpha(
_bg, _bg == term->colors.bg ? term->colors.alpha : 0xffff);
_bg,
(_bg == (term->reverse ? term->colors.fg : term->colors.bg)
? term->colors.alpha : 0xffff));
if (cell->attrs.dim)
color_dim(&fg);
@ -549,8 +551,12 @@ render_margin(struct terminal *term, struct buffer *buf,
const int line_count = end_line - start_line;
uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg;
pixman_color_t bg = color_hex_to_pixman_with_alpha(
_bg, _bg == term->colors.bg ? term->colors.alpha : 0xffff);
_bg,
(_bg == (term->reverse ? term->colors.fg : term->colors.bg)
? term->colors.alpha : 0xffff));
if (term->is_searching)
color_dim(&bg);