+2006-02-06 [colin] 2.0.0cvs22
+
+ * src/action.c
+ * src/filtering.c
+ * src/filtering.h
+ * src/folder.c
+ * src/summaryview.c
+ Fix filtering via menus and actions
+
2006-02-06 [colin] 2.0.0cvs21
* src/imap.c
( cvs diff -u -r 1.34.2.16 -r 1.34.2.17 po/it.po; ) > 2.0.0cvs19.patchset
( cvs diff -u -r 1.60.2.47 -r 1.60.2.48 src/addressbook.c; cvs diff -u -r 1.382.2.234 -r 1.382.2.235 src/compose.c; cvs diff -u -r 1.207.2.87 -r 1.207.2.88 src/folderview.c; cvs diff -u -r 1.20.2.10 -r 1.20.2.11 src/folderview.h; cvs diff -u -r 1.8.2.14 -r 1.8.2.15 src/headerview.c; cvs diff -u -r 1.96.2.93 -r 1.96.2.94 src/textview.c; cvs diff -u -r 1.83.2.63 -r 1.83.2.64 src/mimeview.c; cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/prefs_message.c; cvs diff -u -r 1.395.2.163 -r 1.395.2.164 src/summaryview.c; cvs diff -u -r 1.5.2.19 -r 1.5.2.20 src/gtk/gtkutils.c; cvs diff -u -r 1.4.2.16 -r 1.4.2.17 src/gtk/gtkutils.h; ) > 2.0.0cvs20.patchset
( cvs diff -u -r 1.179.2.91 -r 1.179.2.92 src/imap.c; cvs diff -u -r 1.60.2.9 -r 1.60.2.10 src/filtering.c; cvs diff -u -r 1.21.2.4 -r 1.21.2.5 src/filtering.h; cvs diff -u -r 1.149.2.42 -r 1.149.2.43 src/inc.c; cvs diff -u -r 1.213.2.78 -r 1.213.2.79 src/folder.c; cvs diff -u -r 1.28.2.12 -r 1.28.2.13 src/mbox.c; cvs diff -u -r 1.150.2.50 -r 1.150.2.51 src/procmsg.c; cvs diff -u -r 1.60.2.21 -r 1.60.2.22 src/procmsg.h; ) > 2.0.0cvs21.patchset
+( cvs diff -u -r 1.12.2.29 -r 1.12.2.30 src/action.c; cvs diff -u -r 1.60.2.10 -r 1.60.2.11 src/filtering.c; cvs diff -u -r 1.21.2.5 -r 1.21.2.6 src/filtering.h; cvs diff -u -r 1.213.2.79 -r 1.213.2.80 src/folder.c; cvs diff -u -r 1.395.2.164 -r 1.395.2.165 src/summaryview.c; ) > 2.0.0cvs22.patchset
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=21
+EXTRA_VERSION=22
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
if (action_list == NULL) return FALSE;
/* apply actions on each message info */
- for (p = msglist; p && p->data; p = g_slist_next(p))
+ for (p = msglist; p && p->data; p = g_slist_next(p)) {
filteringaction_apply_action_list(action_list, (MsgInfo *) p->data);
+ }
+ filtering_move_and_copy_msgs(msglist);
for (p = action_list; p; p = g_slist_next(p))
if (p->data) filteringaction_free(p->data);
g_slist_free(action_list);
g_free(prop);
}
+void filtering_move_and_copy_msg(MsgInfo *msginfo)
+{
+ GSList *list = g_slist_append(NULL, msginfo);
+ filtering_move_and_copy_msgs(list);
+ g_slist_free(list);
+}
+
/* move and copy messages by batches to be faster on IMAP */
void filtering_move_and_copy_msgs(GSList *msgs)
{
messages = g_slist_remove(messages, info);
}
if (g_slist_length(batch)) {
+ MsgInfo *info = (MsgInfo *)batch->data;
debug_print("%s %d messages to %s\n",
is_copy?"copying":"moving",
g_slist_length(batch),
folder_item_get_path(last_item));
- if (is_copy) {
+ if (is_copy && last_item != info->folder) {
folder_item_copy_msgs(last_item, batch);
- } else if (is_move) {
+ } else if (is_move && last_item != info->folder) {
if (folder_item_move_msgs(last_item, batch) < 0)
folder_item_move_msgs(
folder_get_default_inbox(),
FilteringProp * filteringprop_copy(FilteringProp *src);
void filtering_move_and_copy_msgs(GSList *msglist);
+void filtering_move_and_copy_msg(MsgInfo *msginfo);
extern GSList * filtering_rules;
extern GSList * pre_global_processing;
extern GSList * post_global_processing;
/* 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);
procmsg_msginfo_free(msginfo);
}
return;
filter_message_by_msginfo(filtering_rules, msginfo);
+ filtering_move_and_copy_msg(msginfo);
}
void summary_msginfo_filter_open(FolderItem * item, MsgInfo *msginfo,
filter_message_by_msginfo(processing, msginfo, NULL);
procmsg_msginfo_free(msginfo);
}
-
+ filtering_move_and_copy_msgs(mlist);
g_slist_free(mlist);
STATUSBAR_POP(summaryview->mainwin);