[evolution] Bug 418520 - Disable Folder -> Expunge in virtual folders
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Bug 418520 - Disable Folder -> Expunge in virtual folders
- Date: Tue, 7 Feb 2012 15:09:21 +0000 (UTC)
commit 5795e22cb7a67056948f81e1faca2dcecb9333de
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Feb 7 09:07:12 2012 -0500
Bug 418520 - Disable Folder -> Expunge in virtual folders
Expunging from a virtual folder actually expunges one or more real
folders, which the user may not be aware of and can lead to unintended
message removal. I feel it's safest to just disable Folder -> Expunge
for any virtual folder, be it Junk, Trash, or a Search Folder.
Note that File -> Empty Trash is still always enabled.
mail/e-mail-sidebar.c | 6 ++++++
mail/e-mail-sidebar.h | 3 ++-
modules/mail/e-mail-shell-view.c | 5 ++++-
3 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/mail/e-mail-sidebar.c b/mail/e-mail-sidebar.c
index b247ada..d347125 100644
--- a/mail/e-mail-sidebar.c
+++ b/mail/e-mail-sidebar.c
@@ -345,6 +345,7 @@ mail_sidebar_check_state (EMailSidebar *sidebar)
gboolean is_outbox = FALSE;
gboolean is_store;
gboolean is_trash = FALSE;
+ gboolean is_virtual = FALSE;
guint32 folder_flags = 0;
guint32 state = 0;
@@ -376,6 +377,9 @@ mail_sidebar_check_state (EMailSidebar *sidebar)
folder_type = (folder_flags & CAMEL_FOLDER_TYPE_MASK);
is_trash |= (folder_type == CAMEL_FOLDER_TYPE_TRASH);
+ /* Is this a virtual folder (junk/trash/search)? */
+ is_virtual |= (folder_flags & CAMEL_FOLDER_VIRTUAL);
+
allows_children = !(is_junk || is_trash);
/* Don't allow deletion of special local folders. */
@@ -405,6 +409,8 @@ mail_sidebar_check_state (EMailSidebar *sidebar)
state |= E_MAIL_SIDEBAR_FOLDER_IS_STORE;
if (is_trash)
state |= E_MAIL_SIDEBAR_FOLDER_IS_TRASH;
+ if (is_virtual)
+ state |= E_MAIL_SIDEBAR_FOLDER_IS_VIRTUAL;
if (CAMEL_IS_SUBSCRIBABLE (store))
state |= E_MAIL_SIDEBAR_STORE_IS_SUBSCRIBABLE;
diff --git a/mail/e-mail-sidebar.h b/mail/e-mail-sidebar.h
index bdde4c1..922e58c 100644
--- a/mail/e-mail-sidebar.h
+++ b/mail/e-mail-sidebar.h
@@ -58,7 +58,8 @@ enum {
E_MAIL_SIDEBAR_FOLDER_IS_OUTBOX = 1 << 3,
E_MAIL_SIDEBAR_FOLDER_IS_STORE = 1 << 4,
E_MAIL_SIDEBAR_FOLDER_IS_TRASH = 1 << 5,
- E_MAIL_SIDEBAR_STORE_IS_SUBSCRIBABLE = 1 << 6
+ E_MAIL_SIDEBAR_FOLDER_IS_VIRTUAL = 1 << 6,
+ E_MAIL_SIDEBAR_STORE_IS_SUBSCRIBABLE = 1 << 7
};
struct _EMailSidebar {
diff --git a/modules/mail/e-mail-shell-view.c b/modules/mail/e-mail-shell-view.c
index afd7501..9929d8a 100644
--- a/modules/mail/e-mail-shell-view.c
+++ b/modules/mail/e-mail-shell-view.c
@@ -828,6 +828,7 @@ mail_shell_view_update_actions (EShellView *shell_view)
gboolean folder_is_outbox;
gboolean folder_is_store;
gboolean folder_is_trash;
+ gboolean folder_is_virtual;
gboolean folder_has_unread_rec = FALSE;
gboolean folder_tree_and_message_list_agree = TRUE;
gboolean store_is_subscribable;
@@ -864,6 +865,8 @@ mail_shell_view_update_actions (EShellView *shell_view)
(state & E_MAIL_SIDEBAR_FOLDER_IS_STORE);
folder_is_trash =
(state & E_MAIL_SIDEBAR_FOLDER_IS_TRASH);
+ folder_is_virtual =
+ (state & E_MAIL_SIDEBAR_FOLDER_IS_VIRTUAL);
store_is_subscribable =
(state & E_MAIL_SIDEBAR_STORE_IS_SUBSCRIBABLE);
@@ -962,7 +965,7 @@ mail_shell_view_update_actions (EShellView *shell_view)
gtk_action_set_sensitive (action, sensitive);
action = ACTION (MAIL_FOLDER_EXPUNGE);
- sensitive = !folder_is_store && uri != NULL;
+ sensitive = !folder_is_store && !folder_is_virtual && uri != NULL;
gtk_action_set_sensitive (action, sensitive);
action = ACTION (MAIL_FOLDER_MOVE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]