[gtk/wip/chergert/builder-expose-object-fix] builder: gracefully handle re-exposing builder object




commit 2818f688ea392f1d43aacb621864b201e8cb4017
Author: Christian Hergert <chergert redhat com>
Date:   Sun Jul 31 04:12:30 2022 -0700

    builder: gracefully handle re-exposing builder object
    
    There are some cases where you might not know that an object has already
    been exposed but is the same object. This handles that gracefully instead
    of displaying a critical.

 gtk/gtkbuilder.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index ab28ccc5d9..e86a409af6 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -1779,10 +1779,16 @@ gtk_builder_expose_object (GtkBuilder    *builder,
                            GObject       *object)
 {
   GtkBuilderPrivate *priv = gtk_builder_get_instance_private (builder);
+  GObject *exposed;
 
   g_return_if_fail (GTK_IS_BUILDER (builder));
   g_return_if_fail (name && name[0]);
-  g_return_if_fail (!g_hash_table_contains (priv->objects, name));
+
+  exposed = g_hash_table_lookup (priv->objects, name);
+  g_return_if_fail (exposed == NULL || exposed == object);
+
+  if (exposed == object)
+    return;
 
   object_set_id (object, name);
   g_hash_table_insert (priv->objects,


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