diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/prefs_common_dialog.c | 22 | ||||
-rw-r--r-- | src/summaryview.c | 19 |
2 files changed, 37 insertions, 4 deletions
diff --git a/src/prefs_common_dialog.c b/src/prefs_common_dialog.c index 9eb7ca38..a43bc55a 100644 --- a/src/prefs_common_dialog.c +++ b/src/prefs_common_dialog.c @@ -155,6 +155,7 @@ static struct JunkMail { GtkWidget *entry_junkfolder; GtkWidget *chkbtn_filter_on_recv; GtkWidget *chkbtn_delete_on_recv; + GtkWidget *chkbtn_mark_as_read; } junk; #if USE_GPGME @@ -386,6 +387,8 @@ static PrefsUIData ui_data[] = { prefs_set_data_from_toggle, prefs_set_toggle}, {"delete_junk_on_receive", &junk.chkbtn_delete_on_recv, prefs_set_data_from_toggle, prefs_set_toggle}, + {"mark_junk_as_read", &junk.chkbtn_mark_as_read, + prefs_set_data_from_toggle, prefs_set_toggle}, #if USE_GPGME /* Privacy */ @@ -1572,6 +1575,7 @@ static void prefs_junk_create(void) GtkWidget *btn_folder; GtkWidget *chkbtn_filter_on_recv; GtkWidget *chkbtn_delete_on_recv; + GtkWidget *chkbtn_mark_as_read; vbox1 = gtk_vbox_new (FALSE, VSPACING); gtk_widget_show (vbox1); @@ -1633,6 +1637,13 @@ static void prefs_junk_create(void) PACK_VSPACER(vbox2, vbox3, 0); + PACK_SMALL_LABEL (vbox2, label, + _("To classify junk mails automatically, both junk " + "and not junk mails must be learned manually to " + "a certain extent.")); + + PACK_VSPACER(vbox2, vbox3, 0); + hbox = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); @@ -1664,13 +1675,17 @@ static void prefs_junk_create(void) gtk_widget_show (vbox3); gtk_box_pack_start (GTK_BOX(vbox2), vbox3, FALSE, FALSE, 0); - PACK_CHECK_BUTTON(vbox3, chkbtn_filter_on_recv, - _("Filter messages classified as junk on receiving")); + PACK_CHECK_BUTTON + (vbox3, chkbtn_filter_on_recv, + _("Filter messages classified as junk on receiving")); PACK_CHECK_BUTTON (vbox3, chkbtn_delete_on_recv, - _("Delete junk mails from server when filtered on receiving")); + _("Delete junk mails from server on receiving")); SET_TOGGLE_SENSITIVITY (chkbtn_filter_on_recv, chkbtn_delete_on_recv); + PACK_CHECK_BUTTON (vbox3, chkbtn_mark_as_read, + _("Mark filtered junk mails as read")); + junk.chkbtn_enable_junk = chkbtn_enable_junk; junk.entry_junk_learncmd = entry_junk_learncmd; junk.entry_nojunk_learncmd = entry_nojunk_learncmd; @@ -1678,6 +1693,7 @@ static void prefs_junk_create(void) junk.entry_junkfolder = entry_junkfolder; junk.chkbtn_filter_on_recv = chkbtn_filter_on_recv; junk.chkbtn_delete_on_recv = chkbtn_delete_on_recv; + junk.chkbtn_mark_as_read = chkbtn_mark_as_read; } #if USE_GPGME diff --git a/src/summaryview.c b/src/summaryview.c index 43f63ec0..77d85e1d 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -3835,9 +3835,20 @@ static gboolean summary_filter_junk_func(GtkTreeModel *model, GtkTreePath *path, if (fltinfo->actions[FLT_ACTION_MOVE] || fltinfo->actions[FLT_ACTION_COPY] || - fltinfo->actions[FLT_ACTION_DELETE]) + fltinfo->actions[FLT_ACTION_DELETE] || + fltinfo->actions[FLT_ACTION_MARK_READ]) summaryview->filtered++; + if (msginfo->flags.perm_flags != fltinfo->flags.perm_flags) { + msginfo->flags = fltinfo->flags; + summary_set_row(summaryview, iter, msginfo); + if (MSG_IS_IMAP(msginfo->flags)) { + if (fltinfo->actions[FLT_ACTION_MARK_READ]) + imap_msg_unset_perm_flags(msginfo, + MSG_NEW|MSG_UNREAD); + } + } + if (fltinfo->actions[FLT_ACTION_MOVE] && fltinfo->move_dest) summary_move_row_to(summaryview, iter, fltinfo->move_dest); else if (fltinfo->actions[FLT_ACTION_DELETE]) @@ -3958,6 +3969,12 @@ static void summary_junk_func(GtkTreeModel *model, GtkTreePath *path, ret = filter_action_exec(&rule, msginfo, file, fltinfo); + if (ret == 0 && MSG_IS_UNREAD(msginfo->flags)) { + summary_mark_row_as_read(summaryview, iter); + if (MSG_IS_IMAP(msginfo->flags)) + imap_msg_unset_perm_flags + (msginfo, MSG_NEW | MSG_UNREAD); + } if (ret == 0 && fltinfo->actions[FLT_ACTION_MOVE] && fltinfo->move_dest) summary_move_row_to(summaryview, iter, fltinfo->move_dest); |