* src/folder.c
[claws.git] / src / folder.c
index 2a61cc49695906838a7beb64ed0eb149dba9d2b2..1136b92624fd03af4c42ec81749921474a3b9cf4 100644 (file)
@@ -968,19 +968,21 @@ void folder_item_close(FolderItem *item)
        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);
 
@@ -2010,17 +2012,18 @@ gint folder_item_remove_msgs(FolderItem *item, GSList *msglist)
        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;