[evolution-ews] Bug #673351 - Empty Trash doesn't work without visiting it
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Bug #673351 - Empty Trash doesn't work without visiting it
- Date: Fri, 3 May 2013 09:37:46 +0000 (UTC)
commit 19b9823de291c586a78b9fb804aed8ac71d4008a
Author: Milan Crha <mcrha redhat com>
Date: Fri May 3 11:37:16 2013 +0200
Bug #673351 - Empty Trash doesn't work without visiting it
src/camel/camel-ews-folder.c | 3 ++-
src/camel/camel-ews-store.c | 29 +++++++++++++++++++++++++++--
2 files changed, 29 insertions(+), 3 deletions(-)
---
diff --git a/src/camel/camel-ews-folder.c b/src/camel/camel-ews-folder.c
index cfc5954..69e3f25 100644
--- a/src/camel/camel-ews-folder.c
+++ b/src/camel/camel-ews-folder.c
@@ -617,7 +617,8 @@ ews_folder_get_message_sync (CamelFolder *folder,
message = camel_ews_folder_get_message_from_cache ((CamelEwsFolder *) folder, uid, cancellable, NULL);
if (!message) {
message = camel_ews_folder_get_message (folder, uid, EWS_ITEM_HIGH, cancellable, error);
- ews_folder_maybe_update_mlist (folder, uid, message);
+ if (message)
+ ews_folder_maybe_update_mlist (folder, uid, message);
}
return message;
diff --git a/src/camel/camel-ews-store.c b/src/camel/camel-ews-store.c
index 6c9ce3a..a35284d 100644
--- a/src/camel/camel-ews-store.c
+++ b/src/camel/camel-ews-store.c
@@ -2247,12 +2247,37 @@ ews_get_trash_folder_sync (CamelStore *store,
folder_name = camel_ews_store_summary_get_folder_full_name (
ews_store->summary, folder_id, NULL);
- folder = ews_get_folder_sync (
+ folder = camel_store_get_folder_sync (
store, folder_name, 0, cancellable, error);
g_free (folder_name);
g_free (folder_id);
+ if (folder) {
+ GPtrArray *folders;
+ gboolean can = TRUE;
+ gint ii;
+
+ /* Save content of all opened folders, thus any messages deleted in them
+ are moved to the Deleted Items folder first, thus in case of the trash
+ folder instance being used to expunge messages will contain all of them.
+ */
+ folders = camel_object_bag_list (store->folders);
+ for (ii = 0; ii < folders->len; ii++) {
+ CamelFolder *secfolder = folders->pdata[ii];
+
+ if (secfolder != folder && can)
+ can = camel_folder_synchronize_sync (secfolder, FALSE, cancellable, NULL);
+
+ g_object_unref (secfolder);
+ }
+ g_ptr_array_free (folders, TRUE);
+
+ /* To return 'Deleted Items' folder with current content,
+ not with possibly stale locally cached copy. */
+ camel_folder_refresh_info_sync (folder, cancellable, NULL);
+ }
+
return folder;
}
@@ -2282,7 +2307,7 @@ ews_get_junk_folder_sync (CamelStore *store,
folder_name = camel_ews_store_summary_get_folder_full_name (
ews_store->summary, folder_id, NULL);
- folder = ews_get_folder_sync (
+ folder = camel_store_get_folder_sync (
store, folder_name, 0, cancellable, error);
g_free (folder_name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]