[empathy] refilter if the TpConnection of a TpAccount is changed



commit 3b00a09f5d1cdee956c847c664dfde21a20f952b
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Oct 24 15:53:34 2011 +0200

    refilter if the TpConnection of a TpAccount is changed
    
    https://bugzilla.gnome.org/show_bug.cgi?id=662609

 libempathy-gtk/empathy-account-chooser.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-account-chooser.c b/libempathy-gtk/empathy-account-chooser.c
index c0df6a6..f743db9 100644
--- a/libempathy-gtk/empathy-account-chooser.c
+++ b/libempathy-gtk/empathy-account-chooser.c
@@ -248,6 +248,14 @@ account_cmp (GtkTreeModel *model,
 }
 
 static void
+account_connection_notify_cb (TpAccount *account,
+    GParamSpec *spec,
+    EmpathyAccountChooser *self)
+{
+  update_account (self, account);
+}
+
+static void
 account_manager_prepared_cb (GObject *source_object,
     GAsyncResult *result,
     gpointer user_data)
@@ -275,6 +283,14 @@ account_manager_prepared_cb (GObject *source_object,
       tp_g_signal_connect_object (account, "status-changed",
           G_CALLBACK (account_chooser_status_changed_cb),
           self, 0);
+
+      /* We generally use the TpConnection from the account to filter it so,
+       * just relying on the account status is not enough. In some case we the
+       * status change can be notified while the TpConnection is still
+       * preparing. */
+      tp_g_signal_connect_object (account, "notify::connection",
+          G_CALLBACK (account_connection_notify_cb),
+          self, 0);
     }
 
   g_list_free (accounts);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]