iconhelper: Handle texture scale again
authorBenjamin Otte <otte@redhat.com>
Wed, 14 Mar 2018 03:38:18 +0000 (04:38 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 16 Mar 2018 05:04:44 +0000 (06:04 +0100)
We will need that in the next commits.

gtk/gtkcellrendererpixbuf.c
gtk/gtkiconhelper.c
gtk/gtkimagedefinition.c
gtk/gtkimagedefinitionprivate.h

index a217634f948829b83550ca76e9ac891801150fbc..1c043a3a462ed7db58cb8912900dc253662fc518 100644 (file)
@@ -381,7 +381,7 @@ gtk_cell_renderer_pixbuf_set_property (GObject      *object,
       take_image_definition (cellpixbuf, gtk_image_definition_new_surface (g_value_get_boxed (value)));
       break;
     case PROP_TEXTURE:
-      take_image_definition (cellpixbuf, gtk_image_definition_new_texture (g_value_get_object (value)));
+      take_image_definition (cellpixbuf, gtk_image_definition_new_texture (g_value_get_object (value), 1));
       break;
     case PROP_ICON_SIZE:
       gtk_cell_renderer_pixbuf_set_icon_size (cellpixbuf, g_value_get_enum (value));
index 54a8212d30beeca56f315046ee9a7866216c7eba..26c1b2ca4a8ea54f60753b9f58a56e3dd6843dc1 100644 (file)
@@ -294,7 +294,7 @@ ensure_paintable_from_texture (GtkIconHelper *self,
                                GdkTexture    *texture,
                                int           *scale)
 {
-  *scale = 1;
+  *scale = gtk_image_definition_get_storage_type (self->def);
 
   return g_object_ref (GDK_PAINTABLE (texture));
 }
@@ -626,7 +626,7 @@ void
 _gtk_icon_helper_set_texture (GtkIconHelper *self,
                              GdkTexture *texture)
 {
-  gtk_icon_helper_take_definition (self, gtk_image_definition_new_texture (texture));
+  gtk_icon_helper_take_definition (self, gtk_image_definition_new_texture (texture, 1));
 }
 
 void
index 561b2b296ef0b75514642f7fae233fc5f95b6887..c3b8a456da56d885a0d601121567ebef8d1d94d3 100644 (file)
@@ -57,6 +57,7 @@ struct _GtkImageDefinitionTexture {
   gint ref_count;
 
   GdkTexture *texture;
+  int scale;
 };
 
 struct _GtkImageDefinitionPaintable {
@@ -150,7 +151,8 @@ gtk_image_definition_new_surface (cairo_surface_t *surface)
 }
 
 GtkImageDefinition *
-gtk_image_definition_new_texture (GdkTexture *texture)
+gtk_image_definition_new_texture (GdkTexture *texture,
+                                  gint        scale)
 {
   GtkImageDefinition *def;
 
@@ -159,6 +161,7 @@ gtk_image_definition_new_texture (GdkTexture *texture)
 
   def = gtk_image_definition_alloc (GTK_IMAGE_TEXTURE);
   def->texture.texture = g_object_ref (texture);
+  def->texture.scale = scale;
 
   return def;
 }
@@ -234,11 +237,12 @@ gtk_image_definition_get_scale (const GtkImageDefinition *def)
       g_assert_not_reached ();
     case GTK_IMAGE_EMPTY:
     case GTK_IMAGE_SURFACE:
-    case GTK_IMAGE_TEXTURE:
     case GTK_IMAGE_PAINTABLE:
     case GTK_IMAGE_ICON_NAME:
     case GTK_IMAGE_GICON:
       return 1;
+    case GTK_IMAGE_TEXTURE:
+      return def->texture.scale;
     }
 }
 
index 8cdb26c9e6fdcf119024a462595d6ff1a0cdf462..66ccae8be5ad7aac5bf58f2e88790e9926254348 100644 (file)
@@ -29,7 +29,8 @@ GtkImageDefinition *    gtk_image_definition_new_empty          (void);
 GtkImageDefinition *    gtk_image_definition_new_icon_name      (const char                     *icon_name);
 GtkImageDefinition *    gtk_image_definition_new_gicon          (GIcon                          *gicon);
 GtkImageDefinition *    gtk_image_definition_new_surface        (cairo_surface_t                *surface);
-GtkImageDefinition *    gtk_image_definition_new_texture        (GdkTexture                     *texture);
+GtkImageDefinition *    gtk_image_definition_new_texture        (GdkTexture                     *texture,
+                                                                 int                             scale);
 GtkImageDefinition *    gtk_image_definition_new_paintable      (GdkPaintable                   *paintable);
 
 GtkImageDefinition *    gtk_image_definition_ref                (GtkImageDefinition             *def);