From 56d5d4cc213d422b2f6dba26d94fb8770203abc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 7 Oct 2023 07:58:55 +0200 Subject: [PATCH] render: disable transparency in margins when in fullscreen This amends 899b768b744c74e88e54e6d8eb32f53accea79d8, where we started disabling transparency in fullscreen Closes #1503 --- CHANGELOG.md | 3 +++ render.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 603cf5b9..f55792d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,12 +109,15 @@ * Crash when compositor calls `fractional_scale::preferred_scale()` when there are no monitors (for example, after a monitor has been turned off and then back on again) ([#1498][1498]). +* Transparency in margins (padding) not being disabled in fullscreen + mode ([#1503][1503]). [1436]: https://codeberg.org/dnkl/foot/issues/1436 [1464]: https://codeberg.org/dnkl/foot/issues/1464 [1465]: https://codeberg.org/dnkl/foot/issues/1465 [1493]: https://codeberg.org/dnkl/foot/pulls/1493 [1498]: https://codeberg.org/dnkl/foot/issues/1498 +[1503]: https://codeberg.org/dnkl/foot/issues/1503 ### Security diff --git a/render.c b/render.c index 517c4b31..3101d36d 100644 --- a/render.c +++ b/render.c @@ -545,6 +545,8 @@ render_cell(struct terminal *term, pixman_image_t *pix, * * By disabling the alpha channel, the window will at * least be rendered in the intended background color. + * + * NOTE: if changing this, also update render_margin() */ xassert(alpha == 0xffff); } else { @@ -882,8 +884,15 @@ render_margin(struct terminal *term, struct buffer *buf, const int bmargin = term->height - term->margins.bottom; 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, term->colors.alpha); + const uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg; + uint16_t alpha = term->colors.alpha; + + if (term->window->is_fullscreen) { + /* Disable alpha in fullscreen - see render_cell() for details */ + alpha = 0xffff; + } + + pixman_color_t bg = color_hex_to_pixman_with_alpha(_bg, alpha); pixman_image_fill_rectangles( PIXMAN_OP_SRC, buf->pix[0], &bg, 4,