Revert "builder: Stop using GtkBuildable.get_id"
authorMatthias Clasen <mclasen@redhat.com>
Mon, 28 Nov 2022 19:36:26 +0000 (14:36 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 28 Nov 2022 19:36:47 +0000 (14:36 -0500)
This reverts commit 92edd4c476917e83c5f50e5eab8aa5a0ad240793.

This commit changed behavior that GNOME Builder relies on.

gtk/gtkbuilder.c
gtk/gtkwidget.c

index 8a53b9bcd7ef740054712790528a3ec443207b89..36f3a1edcb2ae9bc3d7ce8197868fda88e53f6e5 100644 (file)
@@ -626,7 +626,10 @@ gtk_builder_get_parameters (GtkBuilder         *builder,
 static const char *
 object_get_id (GObject *object)
 {
-  return g_object_get_data (object, "gtk-builder-id");
+  if (GTK_IS_BUILDABLE (object))
+    return gtk_buildable_get_buildable_id (GTK_BUILDABLE (object));
+  else
+    return g_object_get_data (object, "gtk-builder-id");
 }
 
 static GObject *
@@ -669,7 +672,10 @@ static inline void
 object_set_id (GObject     *object,
                  const char *id)
 {
-  g_object_set_data_full (object, "gtk-builder-id", g_strdup (id), g_free);
+  if (GTK_IS_BUILDABLE (object))
+    gtk_buildable_set_buildable_id (GTK_BUILDABLE (object), id);
+  else
+    g_object_set_data_full (object, "gtk-builder-id", g_strdup (id), g_free);
 }
 
 void
index e96a4c6750495bc753c19c5e3416881acbb002b8..7f129a0d89a63b8d6218f99422ffd7897452dfe7 100644 (file)
@@ -608,6 +608,9 @@ static gboolean         gtk_widget_real_mnemonic_activate       (GtkWidget
                                                                  gboolean            group_cycling);
 static void             gtk_widget_accessible_interface_init    (GtkAccessibleInterface *iface);
 static void             gtk_widget_buildable_interface_init     (GtkBuildableIface  *iface);
+static void             gtk_widget_buildable_set_id             (GtkBuildable       *buildable,
+                                                                 const char         *id);
+static const char *     gtk_widget_buildable_get_id             (GtkBuildable       *buildable);
 static GObject *        gtk_widget_buildable_get_internal_child (GtkBuildable       *buildable,
                                                                  GtkBuilder         *builder,
                                                                  const char         *childname);
@@ -649,6 +652,7 @@ static GQuark           quark_size_groups = 0;
 static GQuark           quark_auto_children = 0;
 static GQuark           quark_font_options = 0;
 static GQuark           quark_font_map = 0;
+static GQuark           quark_builder_set_id = 0;
 
 GType
 gtk_widget_get_type (void)
@@ -8492,6 +8496,10 @@ gtk_widget_buildable_add_child (GtkBuildable  *buildable,
 static void
 gtk_widget_buildable_interface_init (GtkBuildableIface *iface)
 {
+  quark_builder_set_id = g_quark_from_static_string ("gtk-builder-set-id");
+
+  iface->set_id = gtk_widget_buildable_set_id;
+  iface->get_id = gtk_widget_buildable_get_id;
   iface->get_internal_child = gtk_widget_buildable_get_internal_child;
   iface->custom_tag_start = gtk_widget_buildable_custom_tag_start;
   iface->custom_tag_end = gtk_widget_buildable_custom_tag_end;
@@ -8499,6 +8507,20 @@ gtk_widget_buildable_interface_init (GtkBuildableIface *iface)
   iface->add_child = gtk_widget_buildable_add_child;
 }
 
+static void
+gtk_widget_buildable_set_id (GtkBuildable *buildable,
+                             const char   *id)
+{
+  g_object_set_qdata_full (G_OBJECT (buildable), quark_builder_set_id,
+                           g_strdup (id), g_free);
+}
+
+static const char *
+gtk_widget_buildable_get_id (GtkBuildable *buildable)
+{
+  return g_object_get_qdata (G_OBJECT (buildable), quark_builder_set_id);
+}
+
 static GObject *
 gtk_widget_buildable_get_internal_child (GtkBuildable *buildable,
                                          GtkBuilder   *builder,