diff --git a/gtk/gtkshadow.c b/gtk/gtkshadow.c index ce84e4bff6..c8757b33ba 100644 --- a/gtk/gtkshadow.c +++ b/gtk/gtkshadow.c @@ -275,3 +275,26 @@ _gtk_text_shadow_paint_layout (GtkShadow *shadow, } } +void +_gtk_icon_shadow_paint (GtkShadow *shadow, + cairo_t *cr) +{ + GList *l; + GtkShadowElement *element; + cairo_pattern_t *pattern; + + for (l = g_list_last (shadow->elements); l != NULL; l = l->prev) + { + element = l->data; + + cairo_save (cr); + pattern = cairo_pattern_reference (cairo_get_source (cr)); + gdk_cairo_set_source_rgba (cr, &element->color); + + cairo_translate (cr, element->hoffset, element->voffset); + cairo_mask (cr, pattern); + + cairo_restore (cr); + cairo_pattern_destroy (pattern); + } +} diff --git a/gtk/gtkshadowprivate.h b/gtk/gtkshadowprivate.h index 1594dc6a20..6f1165566d 100644 --- a/gtk/gtkshadowprivate.h +++ b/gtk/gtkshadowprivate.h @@ -58,6 +58,9 @@ void _gtk_text_shadow_paint_layout (GtkShadow *shadow, cairo_t *cr, PangoLayout *layout); +void _gtk_icon_shadow_paint (GtkShadow *shadow, + cairo_t *cr); + G_END_DECLS #endif /* __GTK_SHADOW_H__ */