(imap_update_summary): When reading message flags, set the
authorDan Winship <danw@src.gnome.org>
Tue, 3 Apr 2001 22:03:18 +0000 (22:03 +0000)
committerDan Winship <danw@src.gnome.org>
Tue, 3 Apr 2001 22:03:18 +0000 (22:03 +0000)
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...

camel/ChangeLog
camel/providers/imap/camel-imap-folder.c

index eab9444..412a851 100644 (file)
@@ -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>
 
index b05dcfb..f30c731 100644 (file)
@@ -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"));