From 3d278607782dffa724d91680f4278273583e3962 Mon Sep 17 00:00:00 2001 From: Pavel Vasin Date: Tue, 1 Jan 2013 15:53:26 +0400 Subject: [PATCH] trash-bar: fix double disconnect handler https://bugzilla.gnome.org/show_bug.cgi?id=691004 --- src/nautilus-trash-bar.c | 1 + 1 file changed, 1 insertion(+) Index: nautilus-3.6.3/src/nautilus-trash-bar.c =================================================================== --- nautilus-3.6.3.orig/src/nautilus-trash-bar.c 2012-10-30 00:39:52.000000000 +0100 +++ nautilus-3.6.3/src/nautilus-trash-bar.c 2013-06-18 21:43:55.689875305 +0200 @@ -78,6 +78,15 @@ } static void +on_view_weak_unref (NautilusTrashBar *bar, NautilusView *view_was_here) +{ + if (bar->priv->selection_handler_id) { + g_signal_handler_disconnect (bar->priv->view, bar->priv->selection_handler_id); + bar->priv->selection_handler_id = 0; + } +} + +static void nautilus_trash_bar_set_property (GObject *object, guint prop_id, const GValue *value, @@ -90,7 +99,8 @@ switch (prop_id) { case PROP_VIEW: bar->priv->view = g_value_get_object (value); - connect_view_and_update_button (bar); + g_object_weak_ref (G_OBJECT (bar->priv->view), (GWeakNotify) on_view_weak_unref, bar); + connect_view_and_update_button (bar); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -107,6 +117,7 @@ if (bar->priv->selection_handler_id) { g_signal_handler_disconnect (bar->priv->view, bar->priv->selection_handler_id); + bar->priv->selection_handler_id = 0; } G_OBJECT_CLASS (nautilus_trash_bar_parent_class)->dispose (obj);