aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog4
-rw-r--r--camel/providers/imap/camel-imap-folder.c11
2 files changed, 13 insertions, 2 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index eab94447d8..412a851a2f 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -6,6 +6,10 @@
(imap_get_message): If the server_level < IMAP4rev1, always fetch
messages all-at-once, since they don't support the [#.MIME]
syntax.
+ (imap_update_summary): When reading message flags, set the
+ server_flags field as well, and don't overwrite any flags set by
+ camel_folder_summary_info_new_from_message. Might help with some
+ of the flag problems...
2001-04-02 Dan Winship <danw@ximian.com>
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index b05dcfb5e4..f30c731e0c 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -1103,8 +1103,15 @@ imap_update_summary (CamelFolder *folder,
if (g_datalist_get_data (&fetch_data, "UID"))
camel_message_info_set_uid (mi, g_strdup (g_datalist_get_data (&fetch_data, "UID")));
- if (g_datalist_get_data (&fetch_data, "FLAGS"))
- mi->flags = GPOINTER_TO_INT (g_datalist_get_data (&fetch_data, "FLAGS"));
+ if (g_datalist_get_data (&fetch_data, "FLAGS")) {
+ guint32 flags = GPOINTER_TO_INT (g_datalist_get_data (&fetch_data, "FLAGS"));
+
+ ((CamelImapMessageInfo *)mi)->server_flags = flags;
+ /* "or" them in with the existing flags that may
+ * have been set by summary_info_new_from_message.
+ */
+ mi->flags |= flags;
+ }
if (g_datalist_get_data (&fetch_data, "RFC822.SIZE"))
mi->size = GPOINTER_TO_INT (g_datalist_get_data (&fetch_data, "RFC822.SIZE"));