diff options
-rw-r--r-- | camel/ChangeLog | 4 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 11 |
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")); |