Image—Notify when :storage-type changes from EMPTY
authorDaniel Boles <dboles.src@gmail.com>
Thu, 6 Jul 2023 22:03:20 +0000 (23:03 +0100)
committerDaniel Boles <dboles.src@gmail.com>
Thu, 6 Jul 2023 22:08:20 +0000 (23:08 +0100)
PROP_STORAGE_TYPE was only notified if it was changing *to* EMPTY, in
gtk_image_clear_internal(). We did not notify when it changes *from*
EMPTY to something non-empty. We should as not doing so is confusing,
e.g. if a user wants to bind :storage-type to :visible if non-empty,
which I just did! So, in functions that apply an ImageType, now notify.

Also do so in gtk_image_set_from_definition, declared in imageprivate.h,
even though none of the function there are currently used anywhere.
(Should they be removed?)

gtk/gtkimage.c

index cc4283dd24fadceade8e90769f74f651b9f41947..9759dbdf8b87d3be128f1a4a92fb6fc879ef2576 100644 (file)
@@ -762,6 +762,7 @@ gtk_image_set_from_icon_name  (GtkImage    *image,
     _gtk_icon_helper_set_icon_name (image->icon_helper, icon_name);
 
   g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_ICON_NAME]);
+  g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_STORAGE_TYPE]);
 
   g_object_thaw_notify (G_OBJECT (image));
 }
@@ -795,6 +796,7 @@ gtk_image_set_from_gicon  (GtkImage       *image,
     }
 
   g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_GICON]);
+  g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_STORAGE_TYPE]);
 
   g_object_thaw_notify (G_OBJECT (image));
 }
@@ -857,6 +859,7 @@ gtk_image_set_from_paintable (GtkImage     *image,
     }
 
   g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_PAINTABLE]);
+  g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_STORAGE_TYPE]);
 
   g_object_thaw_notify (G_OBJECT (image));
 }
@@ -1079,6 +1082,8 @@ gtk_image_set_from_definition (GtkImage           *image,
       gtk_image_notify_for_storage_type (image, gtk_image_definition_get_storage_type (def));
     }
 
+  g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_STORAGE_TYPE]);
+
   g_object_thaw_notify (G_OBJECT (image));
 }