2005-10-04 [colin] 1.9.15cvs9
[claws.git] / src / folder.c
index acc65cdc8a9b90a2ee321646440404485db547e1..ccb93f747ae2afdc49a9442bdddfc93fb17e3008 100644 (file)
@@ -51,7 +51,6 @@
 #include "remotefolder.h"
 #include "partial_download.h"
 #include "statusbar.h"
-#include "summaryview.h"
 
 /* Dependecies to be removed ?! */
 #include "prefs_common.h"
@@ -1462,16 +1461,17 @@ static gint folder_sort_folder_list(gconstpointer a, gconstpointer b)
        return (gint_a - gint_b);
 }
 
-gint folder_item_open(FolderItem *item)
+void folder_item_process_open(FolderItem *item)
 {
        gchar *buf;
-       g_return_val_if_fail(item->no_select == FALSE, -1);
-
+       if (item == NULL)
+               return;
        if((item->folder->klass->scan_required != NULL) &&
           (item->folder->klass->scan_required(item->folder, item))) {
                folder_item_scan_full(item, TRUE);
+       } else {
+               folder_item_syncronize_flags(item);
        }
-       folder_item_syncronize_flags(item);
        
        /* Processing */
        buf = g_strdup_printf(_("Processing (%s)...\n"), 
@@ -1481,9 +1481,15 @@ gint folder_item_open(FolderItem *item)
        
        folder_item_apply_processing(item);
 
-       item->opened = TRUE;
-
        debug_print("done.\n");
+       return; 
+}
+
+gint folder_item_open(FolderItem *item)
+{
+       g_return_val_if_fail(item->no_select == FALSE, -1);
+
+       item->opened = TRUE;
 
        return 0;
 }
@@ -1496,8 +1502,6 @@ gint folder_item_close(FolderItem *item)
        g_return_val_if_fail(item != NULL, -1);
        g_return_val_if_fail(item->no_select == FALSE, -1);
 
-       summary_lock(mainwindow_get_mainwindow()->summaryview);
-
        if (item->new_msgs) {
                folder_item_update_freeze();
                mlist = folder_item_get_msg_list(item);
@@ -1517,8 +1521,6 @@ gint folder_item_close(FolderItem *item)
        
        folder_item_update(item, F_ITEM_UPDATE_MSGCNT);
 
-       summary_unlock(mainwindow_get_mainwindow()->summaryview);
-       
        item->opened = FALSE;
        folder = item->folder;
 
@@ -1788,12 +1790,16 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering)
        g_slist_free(folder_list);
 
        if (new_list != NULL) {
+               GSList *tmp_list = NULL;
                newmsg_list = get_msginfos(item, new_list);
                g_slist_free(new_list);
+               tmp_list = g_slist_concat(g_slist_copy(exists_list), g_slist_copy(newmsg_list));
+               syncronize_flags(item, tmp_list);
+               g_slist_free(tmp_list);
+       } else {
+               syncronize_flags(item, exists_list);
        }
 
-       syncronize_flags(item, exists_list);
-
        folder_item_update_freeze();
        if (newmsg_list != NULL) {
                GSList *elem;