diff options
author | Benjamin Otte <otte@redhat.com> | 2016-11-07 18:25:12 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-11-08 20:31:34 +0100 |
commit | 1259a489f2a6b07d6d406eea8c1c8e86634ecb73 (patch) | |
tree | 95753677c71e2ded52e772fbe12ef8b746b08e2c /gtk/gtkimage.c | |
parent | 09359197a7645fd554f99516e129d709c44f0e69 (diff) | |
download | gtk+-1259a489f2a6b07d6d406eea8c1c8e86634ecb73.tar.gz |
iconhelper: Add support for GskTexture
... and use that in GtkImage.
Diffstat (limited to 'gtk/gtkimage.c')
-rw-r--r-- | gtk/gtkimage.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index ae8dec8c5e..7d5e99f92f 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -1420,44 +1420,44 @@ gtk_image_get_render_node (GtkWidget *widget, if (res == NULL) return NULL; - node = gtk_widget_create_render_node (widget, renderer, "Image Content"); + if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION) + { + node = gtk_widget_create_render_node (widget, renderer, "Image Content"); - gtk_widget_get_clip (widget, &clip); - _gtk_widget_get_allocation (widget, &alloc); + gtk_widget_get_clip (widget, &clip); + _gtk_widget_get_allocation (widget, &alloc); - cr = gsk_render_node_get_draw_context (node, renderer); - cairo_translate (cr, alloc.x - clip.x, alloc.y - clip.y); - x = 0; - y = 0; - width = alloc.width; - height = alloc.height; + cr = gsk_render_node_get_draw_context (node, renderer); + cairo_translate (cr, alloc.x - clip.x, alloc.y - clip.y); + x = 0; + y = 0; + width = alloc.width; + height = alloc.height; - _gtk_icon_helper_get_size (priv->icon_helper, &w, &h); + _gtk_icon_helper_get_size (priv->icon_helper, &w, &h); - baseline = gtk_widget_get_allocated_baseline (widget); + baseline = gtk_widget_get_allocated_baseline (widget); - if (baseline == -1) - y += floor(height - h) / 2; - else - y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), 0, height - h); + if (baseline == -1) + y += floor(height - h) / 2; + else + y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), 0, height - h); - x += (width - w) / 2; + x += (width - w) / 2; - if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION) - { GtkStyleContext *context = gtk_widget_get_style_context (widget); GdkPixbuf *pixbuf = get_animation_frame (image); gtk_render_icon (context, cr, pixbuf, x, y); g_object_unref (pixbuf); + + cairo_destroy (cr); } else { - _gtk_icon_helper_draw (priv->icon_helper, cr, x, y); + node = gtk_icon_helper_get_render_node (priv->icon_helper, renderer); } - cairo_destroy (cr); - gsk_render_node_append_child (res, node); gsk_render_node_unref (node); |