aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2023-08-08 09:01:59 +0800
committerPo Lu2023-08-08 09:02:10 +0800
commitf4acae842c02525c41b0e077482206658b14624d (patch)
tree2e72c48900a6aa0fec3a8e0e0fb10699a0840d07 /src
parente1874c4e8bff165abc5c2e842b4381b65da67ebb (diff)
downloademacs-f4acae842c02525c41b0e077482206658b14624d.tar.gz
emacs-f4acae842c02525c41b0e077482206658b14624d.zip
Fix bug#65042
* src/pgtkterm.c (fill_background_by_face): Respect the frame's background alpha property.
Diffstat (limited to 'src')
-rw-r--r--src/pgtkterm.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index f4b05ef9903..e767e15cc07 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -1328,14 +1328,17 @@ fill_background_by_face (struct frame *f, struct face *face, int x, int y,
1328 int width, int height) 1328 int width, int height)
1329{ 1329{
1330 cairo_t *cr = pgtk_begin_cr_clip (f); 1330 cairo_t *cr = pgtk_begin_cr_clip (f);
1331 double r, g, b, a;
1331 1332
1333 cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
1332 cairo_rectangle (cr, x, y, width, height); 1334 cairo_rectangle (cr, x, y, width, height);
1333 cairo_clip (cr); 1335 cairo_clip (cr);
1334 1336
1335 double r = ((face->background >> 16) & 0xff) / 255.0; 1337 r = ((face->background >> 16) & 0xff) / 255.0;
1336 double g = ((face->background >> 8) & 0xff) / 255.0; 1338 g = ((face->background >> 8) & 0xff) / 255.0;
1337 double b = ((face->background >> 0) & 0xff) / 255.0; 1339 b = ((face->background >> 0) & 0xff) / 255.0;
1338 cairo_set_source_rgb (cr, r, g, b); 1340 a = f->alpha_background;
1341 cairo_set_source_rgba (cr, r, g, b, a);
1339 cairo_paint (cr); 1342 cairo_paint (cr);
1340 1343
1341 if (face->stipple != 0) 1344 if (face->stipple != 0)
@@ -1343,10 +1346,10 @@ fill_background_by_face (struct frame *f, struct face *face, int x, int y,
1343 cairo_pattern_t *mask 1346 cairo_pattern_t *mask
1344 = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern; 1347 = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern;
1345 1348
1346 double r = ((face->foreground >> 16) & 0xff) / 255.0; 1349 r = ((face->foreground >> 16) & 0xff) / 255.0;
1347 double g = ((face->foreground >> 8) & 0xff) / 255.0; 1350 g = ((face->foreground >> 8) & 0xff) / 255.0;
1348 double b = ((face->foreground >> 0) & 0xff) / 255.0; 1351 b = ((face->foreground >> 0) & 0xff) / 255.0;
1349 cairo_set_source_rgb (cr, r, g, b); 1352 cairo_set_source_rgba (cr, r, g, b, a);
1350 cairo_mask (cr, mask); 1353 cairo_mask (cr, mask);
1351 } 1354 }
1352 1355