(item->folder->account != NULL) &&
(item->folder->account->filter_on_recv) &&
procmsg_msginfo_filter(msginfo))
- to_filter = g_slist_append(to_filter, msginfo);
+ to_filter = g_slist_prepend(to_filter, msginfo);
else
exists_list = g_slist_prepend(exists_list, msginfo);
}
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);
- filtering_move_and_copy_msg(msginfo);
/* apply rules of the folder */
filter_message_by_msginfo(processing_list, msginfo);
- filtering_move_and_copy_msg(msginfo);
/* apply post global rules */
filter_message_by_msginfo(post_global_processing, msginfo);
- filtering_move_and_copy_msg(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);