aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-contact-chooser.c
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2011-10-26 11:26:11 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-10-26 11:26:11 +0800
commitfcb0e76deed0527edb5caff02dd0edf785b1f82e (patch)
treef3fc56f996ee8ce3a19966e969f7ae6bbb461f14 /libempathy-gtk/empathy-contact-chooser.c
parent6f49a762afc95060f19dc7778b0b588d1e86754b (diff)
downloadgsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar.gz
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar.bz2
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar.lz
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar.xz
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.tar.zst
gsoc2013-empathy-fcb0e76deed0527edb5caff02dd0edf785b1f82e.zip
contact-chooser: refilter when the tmp contacts change capabilities
Making a call to GetContactAttributes only gets the attributes currently known to the CM. If a contact is unknown, lookups for the attributes are then queued and signalled when retrieved. When we receive this signal, we should refilter the contact list. Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=662727
Diffstat (limited to 'libempathy-gtk/empathy-contact-chooser.c')
-rw-r--r--libempathy-gtk/empathy-contact-chooser.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libempathy-gtk/empathy-contact-chooser.c b/libempathy-gtk/empathy-contact-chooser.c
index b16540cf3..7f31e711e 100644
--- a/libempathy-gtk/empathy-contact-chooser.c
+++ b/libempathy-gtk/empathy-contact-chooser.c
@@ -187,6 +187,14 @@ out:
}
static void
+contact_capabilities_changed (TpContact *contact,
+ GParamSpec *pspec,
+ EmpathyContactChooser *self)
+{
+ empathy_individual_view_refilter (self->priv->view);
+}
+
+static void
get_contacts_cb (TpConnection *connection,
guint n_contacts,
TpContact * const *contacts,
@@ -224,6 +232,10 @@ get_contacts_cb (TpConnection *connection,
individual = folks_individual_new (personas);
+ /* listen for updates to the capabilities */
+ tp_g_signal_connect_object (contacts[0], "notify::capabilities",
+ G_CALLBACK (contact_capabilities_changed), self, 0);
+
/* Pass ownership to the list */
ctx->individuals = g_list_prepend (ctx->individuals, individual);