summaryrefslogtreecommitdiff
path: root/gtk/gtklayoutmanager.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2019-03-26 17:13:18 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2019-03-26 17:37:49 +0000
commit3389ddf6fc8ce84daa3b652bbbae749fbf02faa1 (patch)
treecbe8e92dea361a09ab162ea73bf882ca2a25f562 /gtk/gtklayoutmanager.c
parent341660e05602b26958a2379184eec9558d77cb36 (diff)
downloadgtk+-3389ddf6fc8ce84daa3b652bbbae749fbf02faa1.tar.gz
Do not connect to a non-existing signal
The GtkWidget::parent-set signal was removed in ff6cd8f7. Instead of removing GtkLayoutChild instances associated to a widget using notifications when the widget's parent changes, we can have gtk_widget_unparent() call a method on GtkLayoutManager to remove any eventual GtkLayoutChild instances associated to the widget.
Diffstat (limited to 'gtk/gtklayoutmanager.c')
-rw-r--r--gtk/gtklayoutmanager.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/gtk/gtklayoutmanager.c b/gtk/gtklayoutmanager.c
index 5047a58b20..3f05158262 100644
--- a/gtk/gtklayoutmanager.c
+++ b/gtk/gtklayoutmanager.c
@@ -283,12 +283,19 @@ gtk_layout_manager_layout_changed (GtkLayoutManager *manager)
gtk_widget_queue_resize (priv->widget);
}
-static void
-remove_layout_child (GtkWidget *widget,
- GtkWidget *old_parent,
- GtkLayoutManager *self)
+/*< private >
+ * gtk_layout_manager_remove_layout_child:
+ * @manager: a #GtkLayoutManager
+ * @widget: a #GtkWidget
+ *
+ * Removes the #GtkLayoutChild associated with @widget from the
+ * given #GtkLayoutManager, if any is set.
+ */
+void
+gtk_layout_manager_remove_layout_child (GtkLayoutManager *manager,
+ GtkWidget *widget)
{
- GtkLayoutManagerPrivate *priv = gtk_layout_manager_get_instance_private (self);
+ GtkLayoutManagerPrivate *priv = gtk_layout_manager_get_instance_private (manager);
if (priv->layout_children != NULL)
{
@@ -296,8 +303,6 @@ remove_layout_child (GtkWidget *widget,
if (g_hash_table_size (priv->layout_children) == 0)
g_clear_pointer (&priv->layout_children, g_hash_table_unref);
}
-
- g_signal_handlers_disconnect_by_func (widget, remove_layout_child, self);
}
/**
@@ -372,7 +377,6 @@ gtk_layout_manager_get_layout_child (GtkLayoutManager *manager,
g_assert (g_type_is_a (G_OBJECT_TYPE (res), GTK_TYPE_LAYOUT_CHILD));
g_hash_table_insert (priv->layout_children, child, res);
- g_signal_connect (child, "parent-set", G_CALLBACK (remove_layout_child), manager);
return res;
}