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 *
|
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;
|
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.green / 255.,
|
||||||
node->background_gradient_end.blue / 255.,
|
node->background_gradient_end.blue / 255.,
|
||||||
node->background_gradient_end.alpha / 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;
|
return pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -787,8 +794,8 @@ st_theme_node_render_background_with_border (StThemeNode *node)
|
|||||||
*/
|
*/
|
||||||
if (node->background_gradient_type != ST_GRADIENT_NONE)
|
if (node->background_gradient_type != ST_GRADIENT_NONE)
|
||||||
{
|
{
|
||||||
pattern = create_cairo_pattern_of_background_gradient (node);
|
pattern = create_cairo_pattern_of_background_gradient (node,
|
||||||
draw_solid_background = FALSE;
|
&draw_solid_background);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user