From 20a97f4d617ed15d752c127c4bbe3d1e2e5bbba9 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 3 Aug 2013 10:41:42 +0200 Subject: Fix sidebar message counts for real Junk / Trash folders. --- modules/mail/e-mail-shell-view-private.c | 42 +++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-) (limited to 'modules/mail') diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c index 0578727641..f33c6fe07e 100644 --- a/modules/mail/e-mail-shell-view-private.c +++ b/modules/mail/e-mail-shell-view-private.c @@ -996,29 +996,47 @@ e_mail_shell_view_update_sidebar (EMailShellView *mail_shell_view) buffer, ngettext ("%d selected, ", "%d selected, ", uids->len), uids->len); - if (CAMEL_IS_VTRASH_FOLDER (folder)) { - CamelVTrashFolder *trash_folder; - - trash_folder = (CamelVTrashFolder *) folder; - - /* "Trash" folder */ - if (trash_folder->type == CAMEL_VTRASH_FOLDER_TRASH) + /* "Trash" folder (virtual or real) */ + if (folder->folder_flags & CAMEL_FOLDER_IS_TRASH) { + if (CAMEL_IS_VTRASH_FOLDER (folder)) { + /* For a virtual Trash folder, count + * the messages marked for deletion. */ g_string_append_printf ( buffer, ngettext ("%d deleted", "%d deleted", num_deleted), num_deleted); + } else { + /* For a regular Trash folder, just + * count the visible messages. + * + * XXX Open question: what to do about messages + * marked for deletion in Trash? Probably + * this is the wrong question to be asking + * anyway. Deleting a message in a real + * Trash should permanently expunge the + * message (if the server supports that), + * which would eliminate this corner case. */ + if (!e_mail_reader_get_hide_deleted (reader)) + num_visible += num_deleted; - /* "Junk" folder (hide deleted messages) */ - else if (e_mail_reader_get_hide_deleted (reader)) + g_string_append_printf ( + buffer, ngettext ("%d deleted", + "%d deleted", num_visible), num_visible); + } + + /* "Junk" folder (virtual or real) */ + } else if (folder->folder_flags & CAMEL_FOLDER_IS_JUNK) { + if (e_mail_reader_get_hide_deleted (reader)) { + /* Junk folder with deleted messages hidden. */ g_string_append_printf ( buffer, ngettext ("%d junk", "%d junk", num_junked_not_deleted), num_junked_not_deleted); - - /* "Junk" folder (show deleted messages) */ - else + } else { + /* Junk folder with deleted messages visible. */ g_string_append_printf ( buffer, ngettext ("%d junk", "%d junk", num_junked), num_junked); + } /* "Drafts" folder */ } else if (em_utils_folder_is_drafts (registry, folder)) { -- cgit v1.2.3