[gnome-builder/wip/gtk4-port: 1770/1774] plugins/testui: propagate changes from test icon name




commit 930b16498bca062296b75b4cc31a58697194d00e
Author: Christian Hergert <chergert redhat com>
Date:   Sat Jul 9 16:44:43 2022 -0700

    plugins/testui: propagate changes from test icon name

 src/plugins/testui/gbp-testui-item.c | 36 +++++++++++++++++++++++++++++++++---
 1 file changed, 33 insertions(+), 3 deletions(-)
---
diff --git a/src/plugins/testui/gbp-testui-item.c b/src/plugins/testui/gbp-testui-item.c
index c9e249df3..c7d965431 100644
--- a/src/plugins/testui/gbp-testui-item.c
+++ b/src/plugins/testui/gbp-testui-item.c
@@ -89,6 +89,36 @@ gbp_testui_item_get_title (GbpTestuiItem *self)
   return NULL;
 }
 
+static void
+gbp_testui_item_notify_icon_name_cb (GbpTestuiItem *self,
+                                     GParamSpec    *pspec,
+                                     IdeTest       *test)
+{
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (GBP_IS_TESTUI_ITEM (self));
+  g_assert (IDE_IS_TEST (test));
+
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ICON_NAME]);
+}
+
+static void
+gbp_testui_item_set_instance (GbpTestuiItem *self,
+                              gpointer       instance)
+{
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (GBP_IS_TESTUI_ITEM (self));
+  g_assert (G_IS_OBJECT (instance));
+
+  self->instance = g_object_ref (instance);
+
+  if (IDE_IS_TEST (instance))
+    g_signal_connect_object (instance,
+                             "notify::icon-name",
+                             G_CALLBACK (gbp_testui_item_notify_icon_name_cb),
+                             self,
+                             G_CONNECT_SWAPPED);
+}
+
 static void
 gbp_testui_item_dispose (GObject *object)
 {
@@ -114,11 +144,11 @@ gbp_testui_item_get_property (GObject    *object,
       break;
 
     case PROP_ICON_NAME:
-      g_value_set_static_string (value, g_intern_string (gbp_testui_item_get_icon_name (self)));
+      g_value_set_string (value, gbp_testui_item_get_icon_name (self));
       break;
 
     case PROP_EXPANDED_ICON_NAME:
-      g_value_set_static_string (value, g_intern_string (gbp_testui_item_get_expanded_icon_name (self)));
+      g_value_set_string (value, gbp_testui_item_get_expanded_icon_name (self));
       break;
 
     case PROP_TITLE:
@@ -141,7 +171,7 @@ gbp_testui_item_set_property (GObject      *object,
   switch (prop_id)
     {
     case PROP_INSTANCE:
-      self->instance = g_value_dup_object (value);
+      gbp_testui_item_set_instance (self, g_value_get_object (value));
       break;
 
     default:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]