diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c index 797062600e..064835225f 100644 --- a/gtk/gtkcssshadowvalue.c +++ b/gtk/gtkcssshadowvalue.c @@ -391,9 +391,9 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow, _gtk_css_number_value_get (shadow->hoffset, 0), _gtk_css_number_value_get (shadow->voffset, 0)); + gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); cr = gtk_css_shadow_value_start_drawing (shadow, cr); - gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); _gtk_pango_fill_layout (cr, layout); cr = gtk_css_shadow_value_finish_drawing (shadow, cr); @@ -415,9 +415,8 @@ _gtk_css_shadow_value_paint_icon (const GtkCssValue *shadow, cairo_save (cr); pattern = cairo_pattern_reference (cairo_get_source (cr)); - cr = gtk_css_shadow_value_start_drawing (shadow, cr); - gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); + cr = gtk_css_shadow_value_start_drawing (shadow, cr); cairo_translate (cr, _gtk_css_number_value_get (shadow->hoffset, 0), @@ -440,14 +439,13 @@ _gtk_css_shadow_value_paint_spinner (const GtkCssValue *shadow, cairo_save (cr); + gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); cr = gtk_css_shadow_value_start_drawing (shadow, cr); cairo_translate (cr, _gtk_css_number_value_get (shadow->hoffset, 0), _gtk_css_number_value_get (shadow->voffset, 0)); - _gtk_theming_engine_paint_spinner (cr, - radius, progress, - _gtk_css_rgba_value_get_rgba (shadow->color)); + _gtk_theming_engine_paint_spinner (cr, radius, progress); cr = gtk_css_shadow_value_finish_drawing (shadow, cr); @@ -503,6 +501,7 @@ draw_shadow (const GtkCssValue *shadow, if (has_empty_clip (cr)) return; + gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); if (blur) shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr); else @@ -513,7 +512,6 @@ draw_shadow (const GtkCssValue *shadow, if (shadow->inset) _gtk_rounded_box_clip_path (clip_box, shadow_cr); - gdk_cairo_set_source_rgba (shadow_cr, _gtk_css_rgba_value_get_rgba (shadow->color)); cairo_fill (shadow_cr); if (blur) diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c index ac4009e6eb..70a8de2f27 100644 --- a/gtk/gtkthemingengine.c +++ b/gtk/gtkthemingengine.c @@ -2546,8 +2546,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine, void _gtk_theming_engine_paint_spinner (cairo_t *cr, gdouble radius, - gdouble progress, - const GdkRGBA *color) + gdouble progress) { guint num_steps, step; gdouble half; @@ -2576,11 +2575,7 @@ _gtk_theming_engine_paint_spinner (cairo_t *cr, gdouble xscale = - sin (i * G_PI / half); gdouble yscale = - cos (i * G_PI / half); - cairo_set_source_rgba (cr, - color->red, - color->green, - color->blue, - color->alpha * t); + cairo_push_group (cr); cairo_move_to (cr, (radius - inset) * xscale, @@ -2590,6 +2585,9 @@ _gtk_theming_engine_paint_spinner (cairo_t *cr, radius * yscale); cairo_stroke (cr); + + cairo_pop_group_to_source (cr); + cairo_paint_with_alpha (cr, t); } cairo_restore (cr); @@ -2620,10 +2618,8 @@ render_spinner (GtkThemingEngine *engine, radius, -1); - _gtk_theming_engine_paint_spinner (cr, - radius, - -1, - &color); + gdk_cairo_set_source_rgba (cr, &color); + _gtk_theming_engine_paint_spinner (cr, radius, -1); cairo_restore (cr); } diff --git a/gtk/gtkthemingengineprivate.h b/gtk/gtkthemingengineprivate.h index 1b61eb496a..3f7b8846fe 100644 --- a/gtk/gtkthemingengineprivate.h +++ b/gtk/gtkthemingengineprivate.h @@ -26,8 +26,7 @@ G_BEGIN_DECLS void _gtk_theming_engine_paint_spinner (cairo_t *cr, gdouble radius, - gdouble progress, - const GdkRGBA *color); + gdouble progress); GtkCssValue *_gtk_theming_engine_peek_property (GtkThemingEngine *engine, guint property_id);