From 9e050b87711ad401c2a19b0c59fbe4ed0a4bd325 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 17 Aug 2010 11:54:57 +0100 Subject: =?UTF-8?q?Bug=20626552=20=E2=80=94=20Sporadic=20tree=20model=20wa?= =?UTF-8?q?rnings=20upon=20initial=20fill=20in=20Empathy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- libempathy-gtk/empathy-individual-view.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'libempathy-gtk') 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) -- cgit v1.2.3