aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.ja7
-rw-r--r--libsylph/filter.c5
-rw-r--r--src/inc.c22
4 files changed, 37 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 29a802e3..9f8b222d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}
diff --git a/src/inc.c b/src/inc.c
index ca886372..81da2fb2 100644
--- a/src/inc.c
+++ b/src/inc.c
@@ -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] &&