Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 18fc1828213616816080109ae582c4ea > files > 2

empathy-3.6.4-3.fc18.src.rpm

From 1051341e404a481c3296dddc8f75d5decc28f21d Mon Sep 17 00:00:00 2001
From: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Date: Mon, 11 Mar 2013 15:50:46 +0000
Subject: irc-network-chooser-dialog: disconnect live search signals in dispose

The 'destroyed' signal is called to late, we have to disconnect those signals
before destroying the live search object.

https://bugzilla.gnome.org/show_bug.cgi?id=692105
---
diff --git a/libempathy-gtk/empathy-irc-network-chooser-dialog.c b/libempathy-gtk/empathy-irc-network-chooser-dialog.c
index 755eb58..13efaa5 100644
--- a/libempathy-gtk/empathy-irc-network-chooser-dialog.c
+++ b/libempathy-gtk/empathy-irc-network-chooser-dialog.c
@@ -505,16 +505,6 @@ search_text_notify_cb (EmpathyLiveSearch *search,
 }
 
 static void
-dialog_destroy_cb (GtkWidget *widget,
-    EmpathyIrcNetworkChooserDialog *self)
-{
-  EmpathyIrcNetworkChooserDialogPriv *priv = GET_PRIV (self);
-
-  g_signal_handler_disconnect (priv->search, priv->search_sig);
-  g_signal_handler_disconnect (priv->search, priv->activate_sig);
-}
-
-static void
 empathy_irc_network_chooser_dialog_constructed (GObject *object)
 {
   EmpathyIrcNetworkChooserDialog *self = (EmpathyIrcNetworkChooserDialog *) object;
@@ -598,8 +588,6 @@ empathy_irc_network_chooser_dialog_constructed (GObject *object)
 
   g_signal_connect (self, "response",
       G_CALLBACK (dialog_response_cb), self);
-  g_signal_connect (self, "destroy",
-      G_CALLBACK (dialog_destroy_cb), self);
 
   /* Request a side ensuring to display at least some networks */
   gtk_widget_set_size_request (GTK_WIDGET (self), -1, 300);
@@ -613,6 +601,18 @@ empathy_irc_network_chooser_dialog_dispose (GObject *object)
   EmpathyIrcNetworkManager *self = (EmpathyIrcNetworkManager *) object;
   EmpathyIrcNetworkChooserDialogPriv *priv = GET_PRIV (self);
 
+  if (priv->search_sig != 0)
+    {
+      g_signal_handler_disconnect (priv->search, priv->search_sig);
+      priv->search_sig = 0;
+    }
+
+  if (priv->activate_sig != 0)
+    {
+      g_signal_handler_disconnect (priv->search, priv->activate_sig);
+      priv->activate_sig = 0;
+    }
+
   tp_clear_object (&priv->settings);
   tp_clear_object (&priv->network);
   tp_clear_object (&priv->network_manager);
--
cgit v0.9.1