diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index a84c0b34e8..72c1a6f2aa 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -5642,6 +5642,7 @@ gtk_render_option gtk_render_slider gtk_render_activity gtk_render_icon_pixbuf +gtk_render_icon GTK_TYPE_STYLE_CONTEXT diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 3f15bf5218..c6def71be0 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -2230,6 +2230,7 @@ gtk_render_focus gtk_render_frame gtk_render_frame_gap gtk_render_handle +gtk_render_icon gtk_render_icon_pixbuf gtk_render_layout gtk_render_line diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 9810ddd28d..aad8e22248 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -4366,3 +4366,44 @@ gtk_render_icon_pixbuf (GtkStyleContext *context, _gtk_theming_engine_set_context (priv->theming_engine, context); return engine_class->render_icon_pixbuf (priv->theming_engine, source, size); } + +/** + * gtk_render_icon: + * @context: a #GtkStyleContext + * @cr: a #cairo_t + * @pixbuf: a #GdkPixbuf containing the icon to draw + * @x: X position for the @pixbuf + * @y: Y position for the @pixbuf + * + * Renders the icon in @pixbuf at the specified @x and @y coordinates. + * + * Since: 3.2 + **/ +void +gtk_render_icon (GtkStyleContext *context, + cairo_t *cr, + GdkPixbuf *pixbuf, + gdouble x, + gdouble y) +{ + GtkStyleContextPrivate *priv; + GtkThemingEngineClass *engine_class; + + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (cr != NULL); + + priv = context->priv; + engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + + cairo_save (cr); + + store_animation_region (context, + x, y, + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf)); + + _gtk_theming_engine_set_context (priv->theming_engine, context); + engine_class->render_icon (priv->theming_engine, cr, pixbuf, x, y); + + cairo_restore (cr); +} diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h index e687ff13e4..1a29c5174c 100644 --- a/gtk/gtkstylecontext.h +++ b/gtk/gtkstylecontext.h @@ -745,6 +745,11 @@ void gtk_render_activity (GtkStyleContext *context, GdkPixbuf * gtk_render_icon_pixbuf (GtkStyleContext *context, const GtkIconSource *source, GtkIconSize size); +void gtk_render_icon (GtkStyleContext *context, + cairo_t *cr, + GdkPixbuf *pixbuf, + gdouble x, + gdouble y); G_END_DECLS