[gtk/wip/chergert/builder-expose-object-fix] builder: gracefully handle re-exposing builder object
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/builder-expose-object-fix] builder: gracefully handle re-exposing builder object
- Date: Sun, 31 Jul 2022 11:13:22 +0000 (UTC)
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]