render: disable transparency in margins when in fullscreen

This amends 899b768b74, where we started
disabling transparency in fullscreen

Closes #1503
This commit is contained in:
Daniel Eklöf 2023-10-07 07:58:55 +02:00
parent 61eb56dfda
commit 56d5d4cc21
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 14 additions and 2 deletions

View file

@ -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

View file

@ -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,