diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLog.ja | 7 | ||||
-rw-r--r-- | libsylph/filter.c | 5 | ||||
-rw-r--r-- | src/inc.c | 22 |
4 files changed, 37 insertions, 4 deletions
@@ -1,3 +1,10 @@ +2007-03-15 + + * libsylph/filter.c: filter_action_exec(): fixed a bug that flag + changes were not applied on copy action in local filtering. + * src/inc.c: inc_remote_account_mail(): apply flag changes in IMAP + automatic filtering. + 2007-03-14 * libsylph/mh.c diff --git a/ChangeLog.ja b/ChangeLog.ja index 57e9c4fd..9895a9f2 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,10 @@ +2007-03-15 + + * libsylph/filter.c: filter_action_exec(): ローカルフィルタリング + でのコピーアクション時のフラグの変更が適用されなかったバグを修正。 + * src/inc.c: inc_remote_account_mail(): IMAP 自動振り分けでフラグの + 変更を適用するようにした。 + 2007-03-14 * libsylph/mh.c diff --git a/libsylph/filter.c b/libsylph/filter.c index c7f60f29..47b60aab 100644 --- a/libsylph/filter.c +++ b/libsylph/filter.c @@ -216,8 +216,13 @@ gint filter_action_exec(FilterRule *rule, MsgInfo *msginfo, const gchar *file, copy_to_self = TRUE; else { if (action->type == FLT_ACTION_COPY) { + MsgFlags save_flags; + + save_flags = msginfo->flags; + msginfo->flags = fltinfo->flags; val = folder_item_copy_msg (dest_folder, msginfo); + msginfo->flags = save_flags; if (val == -1) return -1; } @@ -266,8 +266,9 @@ static gint inc_remote_account_mail(MainWindow *mainwin, PrefsAccount *account) if (prefs_common.enable_junk && prefs_common.filter_junk_on_recv && prefs_common.filter_junk_before) { - filter_apply_msginfo(prefs_common.junk_fltlist, - msginfo, fltinfo); + filter_apply_msginfo + (prefs_common.manual_junk_fltlist, + msginfo, fltinfo); } if (!fltinfo->drop_done) { @@ -279,8 +280,21 @@ static gint inc_remote_account_mail(MainWindow *mainwin, PrefsAccount *account) prefs_common.enable_junk && prefs_common.filter_junk_on_recv && !prefs_common.filter_junk_before) { - filter_apply_msginfo(prefs_common.junk_fltlist, - msginfo, fltinfo); + filter_apply_msginfo + (prefs_common.manual_junk_fltlist, + msginfo, fltinfo); + } + + if (msginfo->flags.perm_flags != + fltinfo->flags.perm_flags) { + msginfo->flags = fltinfo->flags; + inbox->mark_dirty = TRUE; + if (fltinfo->actions[FLT_ACTION_MARK]) + imap_msg_set_perm_flags + (msginfo, MSG_MARKED); + if (fltinfo->actions[FLT_ACTION_MARK_READ]) + imap_msg_unset_perm_flags + (msginfo, MSG_NEW|MSG_UNREAD); } if (fltinfo->actions[FLT_ACTION_MOVE] && |