GSList *mlist, *cur;
g_return_if_fail(item != NULL);
-
- mlist = folder_item_get_msg_list(item);
- for (cur = mlist ; cur != NULL ; cur = cur->next) {
- MsgInfo * msginfo;
- msginfo = (MsgInfo *) cur->data;
- if (MSG_IS_NEW(msginfo->flags))
- procmsg_msginfo_unset_flags(msginfo, MSG_NEW, 0);
- procmsg_msginfo_free(msginfo);
- }
- g_slist_free(mlist);
+ if (item->new) {
+ mlist = folder_item_get_msg_list(item);
+ for (cur = mlist ; cur != NULL ; cur = cur->next) {
+ MsgInfo * msginfo;
- folder_item_write_cache(olditem);
+ msginfo = (MsgInfo *) cur->data;
+ if (MSG_IS_NEW(msginfo->flags))
+ procmsg_msginfo_unset_flags(msginfo, MSG_NEW, 0);
+ procmsg_msginfo_free(msginfo);
+ }
+ g_slist_free(mlist);
+ }
+
+ folder_item_write_cache(item);
folder_update_item(item, FALSE);
gint ret = 0;
g_return_val_if_fail(item != NULL, -1);
-
folder = item->folder;
+ g_return_val_if_fail(folder != NULL, -1);
+
+ if (!item->cache) folder_item_read_cache(item);
+
if (folder->remove_msgs) {
ret = folder->remove_msgs(folder, item, msglist);
if (ret == 0)
- folder->scan(folder);
+ folder_item_scan(item);
return ret;
}
- if (!item->cache) folder_item_read_cache(item);
-
while (msglist != NULL) {
MsgInfo *msginfo = (MsgInfo *)msglist->data;