folder_item_update_freeze();
if (newmsg_list != NULL) {
- GSList *elem;
+ GSList *elem, *to_filter = NULL;
int total = g_slist_length(newmsg_list), cur = 0;
if ((filtering == TRUE) &&
(item->folder->account != NULL) &&
(item->folder->account->filter_on_recv) &&
procmsg_msginfo_filter(msginfo))
- procmsg_msginfo_free(msginfo);
+ to_filter = g_slist_append(to_filter, msginfo);
else
exists_list = g_slist_prepend(exists_list, msginfo);
}
+ filtering_move_and_copy_msgs(to_filter);
+ for (elem = to_filter; elem; elem = g_slist_next(elem)) {
+ MsgInfo *msginfo = (MsgInfo *)elem->data;
+ procmsg_msginfo_free(msginfo);
+ }
+
+ g_slist_free(to_filter);
g_slist_free(newmsg_list);
statusbar_progress_all(0,0,0);
src->folder->klass->remove_folder(src->folder, src);
folder_write_list();
- if (old_id != NULL && new_id != NULL)
+ if (old_id != NULL && new_id != NULL) {
prefs_filtering_rename_path(old_id, new_id);
+ account_rename_path(old_id, new_id);
+ }
g_free(old_id);
g_free(new_id);
g_return_if_fail(item->no_select == FALSE);
processing_list = item->prefs->processing;
+ if (!pre_global_processing && !processing_list
+ && !post_global_processing)
+ return;
+
folder_item_update_freeze();
mlist = folder_item_get_msg_list(item);
/* apply pre global rules */
filter_message_by_msginfo(pre_global_processing, msginfo);
-
+
/* apply rules of the folder */
filter_message_by_msginfo(processing_list, msginfo);
/* apply post global rules */
filter_message_by_msginfo(post_global_processing, msginfo);
+ }
+ if (pre_global_processing || processing_list
+ || post_global_processing)
+ filtering_move_and_copy_msgs(mlist);
+ for (cur = mlist ; cur != NULL ; cur = cur->next) {
+ MsgInfo * msginfo;
procmsg_msginfo_free(msginfo);
}
g_slist_free(mlist);
WantSyncData *want_sync_data = (WantSyncData *)data;
if (want_sync_data->folder == NULL || item->folder == want_sync_data->folder) {
- if(item->prefs->offlinesync && item->folder->klass->synchronise)
- want_sync_data->want_sync = TRUE;
- else
- want_sync_data->want_sync = FALSE;
+ if (item->prefs->offlinesync && item->folder->klass->synchronise)
+ want_sync_data->want_sync |= TRUE;
}
}
WantSyncData *want_sync_data = g_new0(WantSyncData, 1);
gboolean result;
want_sync_data->folder = folder;
+ want_sync_data->want_sync = FALSE;
folder_func_to_all_folders(folder_item_want_synchronise_func, want_sync_data);
result = want_sync_data->want_sync;