[evolution-data-server] Bug 746335 - [IMAPx] Current folder not updated after message move
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 746335 - [IMAPx] Current folder not updated after message move
- Date: Tue, 14 Apr 2015 12:18:30 +0000 (UTC)
commit 28535d94436f8268bad2b1c10d9b48e85c3b9164
Author: Milan Crha <mcrha redhat com>
Date: Tue Apr 14 14:17:27 2015 +0200
Bug 746335 - [IMAPx] Current folder not updated after message move
camel/providers/imapx/camel-imapx-server.c | 32 +++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 3 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 1944bd5..62b477a 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -5426,11 +5426,37 @@ imapx_command_copy_messages_step_done (CamelIMAPXServer *is,
}
}
- if (data->delete_originals) {
+ if (data->delete_originals || data->use_move_command) {
+ CamelFolderChangeInfo *changes = NULL;
gint j;
- for (j = data->last_index; j < i; j++)
- camel_folder_delete_message (folder, uids->pdata[j]);
+ camel_folder_freeze (folder);
+
+ for (j = data->last_index; j < i; j++) {
+ const gchar *uid = uids->pdata[j];
+
+ if (data->delete_originals) {
+ camel_folder_delete_message (folder, uid);
+ } else {
+ if (camel_folder_summary_remove_uid (folder->summary, uid)) {
+ if (!changes)
+ changes = camel_folder_change_info_new ();
+
+ camel_folder_change_info_remove_uid (changes, uid);
+ }
+ }
+ }
+
+ if (changes && camel_folder_change_info_changed (changes)) {
+ camel_folder_summary_touch (folder->summary);
+ camel_folder_summary_save_to_db (folder->summary, NULL);
+ camel_folder_changed (folder, changes);
+ }
+
+ camel_folder_thaw (folder);
+
+ if (changes)
+ camel_folder_change_info_free (changes);
}
if (i < uids->len) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]