]> git.0d.be Git - empathy.git/commitdiff
log-window: update buttons if contact's caps are updated
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 5 Dec 2011 14:15:24 +0000 (15:15 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 6 Dec 2011 08:30:33 +0000 (09:30 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=665592

libempathy-gtk/empathy-log-window.c

index 65b39f472675f3c804990f8b0b4260ad329ee8a9..51a47c7a39b527246d2e777857db931796b3e69c 100644 (file)
@@ -2112,6 +2112,14 @@ do_update_buttons_sensitivity (EmpathyLogWindow *self)
     }
 }
 
+static void
+contact_capabilities_changed_cb (EmpathyContact *contact,
+    GParamSpec *spec,
+    EmpathyLogWindow *self)
+{
+  do_update_buttons_sensitivity (self);
+}
+
 static void
 log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
 {
@@ -2124,7 +2132,13 @@ log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
   GList *paths;
   GtkTreePath *path;
 
-  tp_clear_object (&self->priv->selected_contact);
+  if (self->priv->selected_contact != NULL)
+    {
+      g_signal_handlers_disconnect_by_func (self->priv->selected_contact,
+          contact_capabilities_changed_cb, self);
+
+      tp_clear_object (&self->priv->selected_contact);
+    }
 
   view = GTK_TREE_VIEW (self->priv->treeview_who);
   model = gtk_tree_view_get_model (view);
@@ -2168,6 +2182,13 @@ log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
     self->priv->selected_contact = g_object_ref (self->priv->events_contact);
 
  out:
+  if (self->priv->selected_contact != NULL)
+    {
+      tp_g_signal_connect_object (self->priv->selected_contact,
+          "notify::capabilities", G_CALLBACK (contact_capabilities_changed_cb),
+          self, 0);
+    }
+
   do_update_buttons_sensitivity (self);
 }