2007-11-27 [colin] 3.1.0cvs40
[claws.git] / src / summaryview.c
index 4ec8fef80fb55611187f4c75ff594a1c9ba2ffe0..796d8c3d2502471edbaae243bba2feb80443db69 100644 (file)
@@ -581,11 +581,13 @@ GtkWidget *summary_get_main_widget(SummaryView *summaryview)
 }
 
 #define START_LONG_OPERATION(summaryview,force_freeze) {       \
+       if (summary_is_locked(summaryview))                     \
+               return;                                         \
        summary_lock(summaryview);                              \
        main_window_cursor_wait(summaryview->mainwin);          \
        if (force_freeze || sc_g_list_bigger(GTK_CLIST(summaryview->ctree)->selection, 1)) {\
-               froze = TRUE;                                           \
-               summary_freeze(summaryview);    \
+               froze = TRUE;                                   \
+               summary_freeze(summaryview);                    \
        }                                                       \
        folder_item_update_freeze();                            \
        inc_lock();                                             \
@@ -595,8 +597,9 @@ GtkWidget *summary_get_main_widget(SummaryView *summaryview)
 #define END_LONG_OPERATION(summaryview) {                      \
        inc_unlock();                                           \
        folder_item_update_thaw();                              \
-       if (froze)                                              \
-               summary_thaw(summaryview);      \
+       if (froze) {                                            \
+               summary_thaw(summaryview);                      \
+       }                                                       \
        main_window_cursor_normal(summaryview->mainwin);        \
        summary_unlock(summaryview);                            \
        summaryview->msginfo_update_callback_id =               \
@@ -1524,8 +1527,9 @@ void summary_lock(SummaryView *summaryview)
 
 void summary_unlock(SummaryView *summaryview)
 {
-       if (summaryview->lock_count)
+       if (summaryview->lock_count) {
                summaryview->lock_count--;
+       }
 }
 
 gboolean summary_is_locked(SummaryView *summaryview)
@@ -5124,10 +5128,15 @@ void summary_filter(SummaryView *summaryview, gboolean selected_only)
        } else {
                mlist = folder_item_get_msg_list(summaryview->folder_item);
        }
+       
+       folder_item_set_batch(summaryview->folder_item, TRUE);
        for (cur_list = mlist; cur_list; cur_list = cur_list->next) {
                summary_filter_func((MsgInfo *)cur_list->data);
        }
+       folder_item_set_batch(summaryview->folder_item, FALSE);
+       
        filtering_move_and_copy_msgs(mlist);
+       
        for (cur_list = mlist; cur_list; cur_list = cur_list->next) {
                procmsg_msginfo_free((MsgInfo *)cur_list->data);
        }