talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 6408f4a501cf08f6e33bb920b8bb4e51dddb23db
parent 2a3e98d24814b8a92b0d995c94a4c24c580a4c4a
Author: Stephan Sachse <ste.sachse@gmail.com>
Date:   Sun, 26 Jul 2015 02:22:15 +0200

fix nntp manually filtering with account specific rules

manually running filter on nntp folders doesn't work correctly with
account specific rules. filtering_match_condition() in filtering.c:568
always gets a NULL as ac_prefs and every check with ac_prefs fails
subsequently. later cur_account is used instead, what is imo clearly
wrong and useless.

i have patched summaryview.c:5649 summary_filter() to extract the
account data from summaryview and hand over them as new parameter to
summary_filter_func().

works for me on fedora 22 and claws-mail-3.11.1

Signed-off-by: Stephan Sachse <ste.sachse@gmail.com>
Signed-off-by: Andrej Kacian <ticho@claws-mail.org>

Diffstat:
Msrc/summaryview.c | 14++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/summaryview.c b/src/summaryview.c @@ -231,7 +231,8 @@ static void summary_unthread_for_exec_func (GtkCMCTree *ctree, void summary_simplify_subject(SummaryView *summaryview, gchar * rexp, GSList * mlist); -static void summary_filter_func (MsgInfo *msginfo); +static void summary_filter_func (MsgInfo *msginfo, + PrefsAccount *ac_prefs); static void summary_colorlabel_menu_item_activate_cb (GtkWidget *widget, @@ -5821,6 +5822,7 @@ static gboolean summary_filter_get_mode(void) void summary_filter(SummaryView *summaryview, gboolean selected_only) { GSList *mlist = NULL, *cur_list; + PrefsAccount *ac_prefs = NULL; summary_lock(summaryview); /* are there any per-account filtering rules? */ @@ -5855,9 +5857,13 @@ void summary_filter(SummaryView *summaryview, gboolean selected_only) mlist = folder_item_get_msg_list(summaryview->folder_item); } + ac_prefs = ((summaryview->folder_item->folder != NULL) && + (summaryview->folder_item->folder->account != NULL)) + ? summaryview->folder_item->folder->account : NULL; + 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); + summary_filter_func((MsgInfo *)cur_list->data, ac_prefs); } folder_item_set_batch(summaryview->folder_item, FALSE); @@ -5884,7 +5890,7 @@ void summary_filter(SummaryView *summaryview, gboolean selected_only) summary_show(summaryview, summaryview->folder_item); } -static void summary_filter_func(MsgInfo *msginfo) +static void summary_filter_func(MsgInfo *msginfo, PrefsAccount *ac_prefs) { MailFilteringData mail_filtering_data; @@ -5895,7 +5901,7 @@ static void summary_filter_func(MsgInfo *msginfo) if (hooks_invoke(MAIL_MANUAL_FILTERING_HOOKLIST, &mail_filtering_data)) return; - filter_message_by_msginfo(filtering_rules, msginfo, NULL, + filter_message_by_msginfo(filtering_rules, msginfo, ac_prefs, FILTERING_MANUALLY, NULL); }