[gnome-builder] libide/tweaks: print object types and listmodel generics



commit 97da9b685c402e526a1e0a5c6d4a362e46e6a33c
Author: Christian Hergert <chergert redhat com>
Date:   Sun Jul 31 05:31:50 2022 -0700

    libide/tweaks: print object types and listmodel generics

 src/libide/tweaks/ide-tweaks-item.c | 46 +++++++++++++++++++++++++++----------
 1 file changed, 34 insertions(+), 12 deletions(-)
---
diff --git a/src/libide/tweaks/ide-tweaks-item.c b/src/libide/tweaks/ide-tweaks-item.c
index e9c0d9f44..02cd35df2 100644
--- a/src/libide/tweaks/ide-tweaks-item.c
+++ b/src/libide/tweaks/ide-tweaks-item.c
@@ -523,19 +523,41 @@ _ide_tweaks_item_printf (IdeTweaksItem *self,
     {
       GParamSpec *pspec = pspecs[i];
 
-      if (pspec->flags & G_PARAM_READABLE &&
-          g_value_type_transformable (pspec->value_type, G_TYPE_STRING))
+      if (pspec->flags & G_PARAM_READABLE)
         {
-          g_auto(GValue) value = G_VALUE_INIT;
-          g_autofree char *copy = NULL;
-
-          g_value_init (&value, G_TYPE_STRING);
-          g_object_get_property (G_OBJECT (self), pspec->name, &value);
-
-          if (g_value_get_string (&value))
-            copy = g_strescape (g_value_get_string (&value), NULL);
-
-          g_string_append_printf (string, " %s=\"%s\"", pspec->name, copy ? copy : "");
+          if (g_value_type_transformable (pspec->value_type, G_TYPE_STRING))
+            {
+              g_auto(GValue) value = G_VALUE_INIT;
+              g_autofree char *copy = NULL;
+
+              g_value_init (&value, G_TYPE_STRING);
+              g_object_get_property (G_OBJECT (self), pspec->name, &value);
+
+              if (g_value_get_string (&value))
+                copy = g_strescape (g_value_get_string (&value), NULL);
+
+              g_string_append_printf (string, " %s=\"%s\"", pspec->name, copy ? copy : "");
+            }
+          else if (g_type_is_a (pspec->value_type, G_TYPE_OBJECT))
+            {
+              g_auto(GValue) value = G_VALUE_INIT;
+              g_autofree char *generic = NULL;
+              const char *type_name = "";
+              GObject *obj;
+
+              g_value_init (&value, G_TYPE_OBJECT);
+              g_object_get_property (G_OBJECT (self), pspec->name, &value);
+
+              if ((obj = g_value_get_object (&value)))
+                type_name = G_OBJECT_TYPE_NAME (obj);
+
+              if (G_IS_LIST_MODEL (obj))
+                type_name = generic = g_strdup_printf ("%s<%s>",
+                                                       G_OBJECT_TYPE_NAME (obj),
+                                                       g_type_name (g_list_model_get_item_type (G_LIST_MODEL 
(obj))));
+
+              g_string_append_printf (string, " %s=\"%s\"", pspec->name, type_name);
+            }
         }
     }
 


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