From 140aa99d94049e35d54c8b34599085f2ca6119e0 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 1 Sep 2009 12:51:01 +0200 Subject: Bug #593779 - re-committing patch from bug #214238 --- mail/em-folder-tree.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'mail/em-folder-tree.c') diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 7c9293ca19..568bf490e5 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -788,7 +788,7 @@ static void render_display_name (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { - gboolean is_store, bold; + gboolean is_store, bold, subdirs_unread = FALSE; guint unread; gchar *display; gchar *name; @@ -797,18 +797,29 @@ render_display_name (GtkTreeViewColumn *column, GtkCellRenderer *renderer, COL_BOOL_IS_STORE, &is_store, COL_UINT_UNREAD, &unread, -1); - if (!(bold = is_store || unread)) { - if (gtk_tree_model_iter_has_child (model, iter)) - bold = subdirs_contain_unread (model, iter); + bold = is_store || unread; + + if (gtk_tree_model_iter_has_child (model, iter)) { + gboolean expanded = TRUE; + + g_object_get (renderer, "is-expanded", &expanded, NULL); + + if (!bold || !expanded) + subdirs_unread = subdirs_contain_unread (model, iter); } + bold = bold || subdirs_unread; + if (!is_store && unread) { /* Translators: This is the string used for displaying the - * folder names in folder trees. "%s" will be replaced by - * the folder's name and "%u" will be replaced with the - * number of unread messages in the folder. + * folder names in folder trees. The first "%s" will be + * replaced by the folder's name and "%u" will be replaced + * with the number of unread messages in the folder. The + * second %s will be replaced with a "+" letter for collapsed + * folders with unread messages in some subfolder too, + * or with an empty string for other cases. * - * Most languages should translate this as "%s (%u)". The + * Most languages should translate this as "%s (%u%s)". The * languages that use localized digits (like Persian) may * need to replace "%u" with "%Iu". Right-to-left languages * (like Arabic and Hebrew) may need to add bidirectional @@ -818,7 +829,7 @@ render_display_name (GtkTreeViewColumn *column, GtkCellRenderer *renderer, * Do not translate the "folder-display|" part. Remove it * from your translation. */ - display = g_strdup_printf (C_("folder-display", "%s (%u)"), name, unread); + display = g_strdup_printf (C_("folder-display", "%s (%u%s)"), name, unread, subdirs_unread ? "+" : ""); g_free (name); } else display = name; -- cgit