diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2019-03-26 17:13:18 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2019-03-26 17:37:49 +0000 |
commit | 3389ddf6fc8ce84daa3b652bbbae749fbf02faa1 (patch) | |
tree | cbe8e92dea361a09ab162ea73bf882ca2a25f562 /gtk/gtklayoutmanager.c | |
parent | 341660e05602b26958a2379184eec9558d77cb36 (diff) | |
download | gtk+-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.c | 20 |
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; } |