aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2010-08-17 18:54:57 +0800
committerPhilip Withnall <philip.withnall@collabora.co.uk>2010-08-18 02:39:24 +0800
commit9e050b87711ad401c2a19b0c59fbe4ed0a4bd325 (patch)
tree5d4f8c771a73d0b187efc28b436f72a8f3bb3d2c
parent8a94e12fda3bc8d98b32f7ef05a32af7875da6f7 (diff)
downloadgsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar.gz
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar.bz2
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar.lz
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar.xz
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.tar.zst
gsoc2013-empathy-9e050b87711ad401c2a19b0c59fbe4ed0a4bd325.zip
Bug 626552 — Sporadic tree model warnings upon initial fill in Empathy
Work around bgo#621076 in EmpathyIndividualView to ensure that all individuals and groups are visible in the contact list on initial load. Closes: bgo#626552
-rw-r--r--libempathy-gtk/empathy-individual-view.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c
index 6f8cda08e..05ca7aced 100644
--- a/libempathy-gtk/empathy-individual-view.c
+++ b/libempathy-gtk/empathy-individual-view.c
@@ -1376,6 +1376,7 @@ individual_view_row_has_child_toggled_cb (GtkTreeModel *model,
g_free (name);
}
+/* FIXME: This is a workaround for bgo#621076 */
static void
individual_view_verify_group_visibility (EmpathyIndividualView *view,
GtkTreePath *path)
@@ -1493,13 +1494,22 @@ individual_view_filter_visible_func (GtkTreeModel *model,
if (individual != NULL)
{
- visible = individual_view_is_visible_individual (self, individual);
+ if (is_searching == TRUE)
+ visible = individual_view_is_visible_individual (self, individual);
+ else
+ visible = (priv->show_offline || is_online);
+
g_object_unref (individual);
- if (is_searching)
- return visible;
- else
- return (priv->show_offline || is_online);
+ /* FIXME: Work around bgo#626552/bgo#621076 */
+ if (visible == TRUE)
+ {
+ GtkTreePath *path = gtk_tree_model_get_path (model, iter);
+ individual_view_verify_group_visibility (self, path);
+ gtk_tree_path_free (path);
+ }
+
+ return visible;
}
if (is_separator)