StThemeNodeDrawing: fill background behind translucent gradients
If a background gradient isn't fully opaque, then we need to first fill in the background color so the border color doesn't leak into the interior. https://bugzilla.gnome.org/show_bug.cgi?id=640465
This commit is contained in:
parent
0e23ec394e
commit
b4ec342d06
@ -452,7 +452,8 @@ st_theme_node_has_visible_outline (StThemeNode *node)
|
||||
}
|
||||
|
||||
static cairo_pattern_t *
|
||||
create_cairo_pattern_of_background_gradient (StThemeNode *node)
|
||||
create_cairo_pattern_of_background_gradient (StThemeNode *node,
|
||||
gboolean *needs_background_fill)
|
||||
{
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
@ -482,6 +483,12 @@ create_cairo_pattern_of_background_gradient (StThemeNode *node)
|
||||
node->background_gradient_end.green / 255.,
|
||||
node->background_gradient_end.blue / 255.,
|
||||
node->background_gradient_end.alpha / 255.);
|
||||
if (node->background_color.alpha > 0 ||
|
||||
node->background_gradient_end.alpha > 0)
|
||||
*needs_background_fill = TRUE;
|
||||
else
|
||||
*needs_background_fill = FALSE;
|
||||
|
||||
return pattern;
|
||||
}
|
||||
|
||||
@ -787,8 +794,8 @@ st_theme_node_render_background_with_border (StThemeNode *node)
|
||||
*/
|
||||
if (node->background_gradient_type != ST_GRADIENT_NONE)
|
||||
{
|
||||
pattern = create_cairo_pattern_of_background_gradient (node);
|
||||
draw_solid_background = FALSE;
|
||||
pattern = create_cairo_pattern_of_background_gradient (node,
|
||||
&draw_solid_background);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user