[evolution-ews] Bug #657807 - "Save as draft" saving duplicate drafts
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Bug #657807 - "Save as draft" saving duplicate drafts
- Date: Tue, 20 Aug 2013 18:53:04 +0000 (UTC)
commit 8dfdfd2bf6e33a73bacea05d3c1aa36d86efb3fb
Author: Milan Crha <mcrha redhat com>
Date: Tue Aug 20 20:52:22 2013 +0200
Bug #657807 - "Save as draft" saving duplicate drafts
src/camel/camel-ews-folder.c | 16 +++++++++++-----
src/camel/camel-ews-summary.c | 11 ++++++++---
src/camel/camel-ews-summary.h | 1 +
3 files changed, 20 insertions(+), 8 deletions(-)
---
diff --git a/src/camel/camel-ews-folder.c b/src/camel/camel-ews-folder.c
index 16c47c0..b51f824 100644
--- a/src/camel/camel-ews-folder.c
+++ b/src/camel/camel-ews-folder.c
@@ -1636,8 +1636,8 @@ ews_append_message_sync (CamelFolder *folder,
e_ews_folder_id_free (fid);
g_free (folder_id);
- /* FIXME: Do we have to add it to the summary info ourselves?
- * Hopefully, since we need to store the changekey with it... */
+ camel_ews_summary_add_message (folder->summary, itemid, info, message);
+
if (appended_uid)
*appended_uid = itemid;
else
@@ -1857,6 +1857,15 @@ static void
ews_folder_dispose (GObject *object)
{
CamelEwsFolder *ews_folder = CAMEL_EWS_FOLDER (object);
+ CamelFolderSummary *summary;
+
+ summary = CAMEL_FOLDER (ews_folder)->summary;
+ if (summary) {
+ g_signal_handlers_disconnect_by_func (CAMEL_FOLDER (ews_folder)->summary, G_CALLBACK
(ews_folder_count_notify_cb), ews_folder);
+
+ /* save changes, if there are any unsaved */
+ camel_folder_summary_save_to_db (summary, NULL);
+ }
if (ews_folder->cache != NULL) {
g_object_unref (ews_folder->cache);
@@ -1868,9 +1877,6 @@ ews_folder_dispose (GObject *object)
ews_folder->search = NULL;
}
- if (CAMEL_FOLDER (ews_folder)->summary)
- g_signal_handlers_disconnect_by_func (CAMEL_FOLDER (ews_folder)->summary, G_CALLBACK
(ews_folder_count_notify_cb), ews_folder);
-
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (camel_ews_folder_parent_class)->dispose (object);
}
diff --git a/src/camel/camel-ews-summary.c b/src/camel/camel-ews-summary.c
index ae51f33..1bb7b2d 100644
--- a/src/camel/camel-ews-summary.c
+++ b/src/camel/camel-ews-summary.c
@@ -274,17 +274,20 @@ ews_info_set_flags (CamelMessageInfo *info,
void
camel_ews_summary_add_message (CamelFolderSummary *summary,
const gchar *uid,
+ CamelMessageInfo *info,
CamelMimeMessage *message)
{
CamelEwsMessageInfo *mi;
- CamelMessageInfo *info;
const CamelFlag *flag;
const CamelTag *tag;
- info = camel_folder_summary_get (summary, uid);
+ g_return_if_fail (uid != NULL);
+ g_return_if_fail (info != NULL);
+ g_return_if_fail (message != NULL);
/* Create summary entry */
mi = (CamelEwsMessageInfo *) camel_folder_summary_info_new_from_message (summary, message, NULL);
+ g_return_if_fail (mi != NULL);
/* Copy flags 'n' tags */
mi->info.flags = camel_message_info_flags (info);
@@ -294,6 +297,7 @@ camel_ews_summary_add_message (CamelFolderSummary *summary,
camel_message_info_set_user_flag ((CamelMessageInfo *) mi, flag->name, TRUE);
flag = flag->next;
}
+
tag = camel_message_info_user_tags (info);
while (tag) {
camel_message_info_set_user_tag ((CamelMessageInfo *) mi, tag->name, tag->value);
@@ -304,7 +308,8 @@ camel_ews_summary_add_message (CamelFolderSummary *summary,
mi->info.uid = camel_pstring_strdup (uid);
camel_folder_summary_add (summary, (CamelMessageInfo *) mi);
- camel_message_info_free (info);
+ camel_folder_summary_touch (summary);
+ camel_folder_summary_save_to_db (summary, NULL);
}
static gboolean
diff --git a/src/camel/camel-ews-summary.h b/src/camel/camel-ews-summary.h
index 78a1407..e69eed6 100644
--- a/src/camel/camel-ews-summary.h
+++ b/src/camel/camel-ews-summary.h
@@ -91,6 +91,7 @@ gboolean
CamelFlag *server_user_flags);
void camel_ews_summary_add_message (CamelFolderSummary *summary,
const gchar *uid,
+ CamelMessageInfo *info,
CamelMimeMessage *message);
void ews_summary_clear (CamelFolderSummary *summary,
gboolean uncache);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]