]> git.0d.be Git - empathy.git/commitdiff
Do not ref tooltip_widget otherwise it never gets destroyed.
authorXavier Claessens <xclaesse@src.gnome.org>
Mon, 2 Jun 2008 09:12:20 +0000 (09:12 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Mon, 2 Jun 2008 09:12:20 +0000 (09:12 +0000)
svn path=/trunk/; revision=1133

libempathy-gtk/empathy-contact-list-view.c

index 56d5eb1a1f9c3a63dd59993fbc249f10d5389dc5..6f8bd064d03c11ed06084e0ce1203265a36050ab 100644 (file)
@@ -117,19 +117,6 @@ static guint signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE (EmpathyContactListView, empathy_contact_list_view, GTK_TYPE_TREE_VIEW);
 
-static void
-contact_list_view_tooltip_destroy_cb (GtkWidget              *widget,
-                                     EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
-       DEBUG ("Tooltip destroyed");
-       if (priv->tooltip_widget) {
-               g_object_unref (priv->tooltip_widget);
-               priv->tooltip_widget = NULL;
-       }
-}
-
 static gboolean
 contact_list_view_query_tooltip_cb (EmpathyContactListView *view,
                                    gint                    x,
@@ -162,15 +149,14 @@ contact_list_view_query_tooltip_cb (EmpathyContactListView *view,
 
        if (!priv->tooltip_widget) {
                priv->tooltip_widget = empathy_contact_widget_new (contact,
-                                               EMPATHY_CONTACT_WIDGET_EDIT_NONE);
-               g_object_ref (priv->tooltip_widget);
-               g_signal_connect (priv->tooltip_widget, "destroy",
-                                 G_CALLBACK (contact_list_view_tooltip_destroy_cb),
-                                 view);
-
+                       EMPATHY_CONTACT_WIDGET_EDIT_NONE);
+               g_object_add_weak_pointer (G_OBJECT (priv->tooltip_widget),
+                                          (gpointer) &priv->tooltip_widget);
        } else {
-               empathy_contact_widget_set_contact (priv->tooltip_widget, contact);
+               empathy_contact_widget_set_contact (priv->tooltip_widget,
+                                                   contact);
        }
+
        gtk_tooltip_set_custom (tooltip, priv->tooltip_widget);
 
        g_object_unref (contact);
@@ -980,10 +966,6 @@ contact_list_view_finalize (GObject *object)
                g_object_unref (priv->store);
        }
 
-       if (priv->tooltip_widget) {
-               g_object_unref (priv->tooltip_widget);
-       }
-
        G_OBJECT_CLASS (empathy_contact_list_view_parent_class)->finalize (object);
 }