2008-09-12 Andre Klapper <a9016009@gmx.de>
+ * camel-folder-summary.c (info_set_flags): Fix for counts on junk
+ * camel-vee-folder.c (update_summary), (folder_changed_change_uid):
+ * camel-vtrash-folder.c (vtrash_getv),
+ (camel_vtrash_folder_class_init):
+
+2008-09-15 Srinivasa Ragavan <sragavan@novell.com>
+
* camel-store.c: Fixing typo.
2008-09-12 Srinivasa Ragavan <sragavan@novell.com>
return FALSE;
if (mi->summary) {
- if (read)
+ if (read && junk == 0 && !(mi->flags & CAMEL_MESSAGE_JUNK))
mi->summary->unread_count -= read;
+ else if (junk > 0)
+ mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : 1;
+ else if (junk < 0)
+ mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : -1;
+
if (deleted)
mi->summary->deleted_count += deleted;
if (junk)
int unread=0, deleted=0, junk=0;
CamelFolderSummary *summary = ((CamelMessageInfo *) mi)->summary;
- if (!(flags & CAMEL_MESSAGE_SEEN))
+ if (!(flags & CAMEL_MESSAGE_SEEN) && !(flags & CAMEL_MESSAGE_JUNK))
unread = 1;
if (flags & CAMEL_MESSAGE_DELETED)
} else {
oldflags = use_old ? oldflags : flags;
unread = deleted = junk = 0;
- if (!(oldflags & CAMEL_MESSAGE_SEEN))
+ if (!(oldflags & CAMEL_MESSAGE_SEEN) && !(oldflags & CAMEL_MESSAGE_JUNK))
unread -= 1;
if (oldflags & CAMEL_MESSAGE_DELETED)
summary->saved_count--;
}
} else {
- if (!(oldflags & CAMEL_MESSAGE_SEEN))
+ if (!(oldflags & CAMEL_MESSAGE_SEEN) && !(oldflags & CAMEL_MESSAGE_JUNK))
unread -= 1;
if (oldflags & CAMEL_MESSAGE_DELETED)
info = camel_folder_get_message_info(sub, uid);
if (info) {
if (vinfo) {
+ guint32 of = vinfo->old_flags;
camel_folder_change_info_change_uid(vf->changes, vuid);
- update_summary (vinfo, camel_message_info_flags(info), vinfo->old_flags, FALSE /* Doesn't matter */, TRUE);
+ update_summary (vinfo, camel_message_info_flags(info), of, FALSE /* Doesn't matter */, TRUE);
camel_message_info_free((CamelMessageInfo *)vinfo);
}
/* This is so we can get the values atomically, and also so we can calculate them only once */
if (unread == -1) {
int j;
- CamelMessageInfo *info;
+ CamelMessageInfoBase *info;
+ CamelVeeMessageInfo *vinfo;
unread = 0;
count = camel_folder_summary_count(folder->summary);
for (j=0; j<count; j++) {
- if ((info = camel_folder_summary_index(folder->summary, j))) {
- guint32 flags = camel_message_info_flags(info);
+ if ((info = (CamelMessageInfoBase *) camel_folder_summary_index(folder->summary, j))) {
+ guint32 flags;
+
+ vinfo = (CamelVeeMessageInfo *) info;
+ flags = vinfo->old_flags ? vinfo->old_flags : camel_message_info_flags(info);
if ((flags & (CAMEL_MESSAGE_SEEN)) == 0)
unread++;
camel_vtrash_folder_parent = CAMEL_VEE_FOLDER_CLASS(camel_vee_folder_get_type());
/* Not required from here on. We don't count */
- /* ((CamelObjectClass *)klass)->getv = vtrash_getv; */
+ ((CamelObjectClass *)klass)->getv = vtrash_getv;
folder_class->append_message = vtrash_append_message;
folder_class->transfer_messages_to = vtrash_transfer_messages_to;