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,