diff options
| author | Po Lu | 2023-08-08 09:01:59 +0800 |
|---|---|---|
| committer | Po Lu | 2023-08-08 09:02:10 +0800 |
| commit | f4acae842c02525c41b0e077482206658b14624d (patch) | |
| tree | 2e72c48900a6aa0fec3a8e0e0fb10699a0840d07 /src | |
| parent | e1874c4e8bff165abc5c2e842b4381b65da67ebb (diff) | |
| download | emacs-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.c | 19 |
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 | ||