diff options
author | Dan Winship <danw@src.gnome.org> | 2000-12-06 00:46:15 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2000-12-06 00:46:15 +0800 |
commit | 8d4e508f40ad5910d240868b6885ab9473751b78 (patch) | |
tree | 42859cb6fc74ee4503cac63e0c72eddc3b57e759 /camel/providers | |
parent | b05a2b14c8c4609548fa286807dd3371c9302d1e (diff) | |
download | gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar.gz gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar.bz2 gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar.lz gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar.xz gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.tar.zst gsoc2013-evolution-8d4e508f40ad5910d240868b6885ab9473751b78.zip |
Fix the check for "flags aren't actually changing".
* providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix
the check for "flags aren't actually changing".
* providers/local/camel-local-folder.c (local_set_message_flags,
local_set_message_user_flag, local_set_message_user_tag): Don't
emit message_changed unless the flags actually changed.
* providers/nntp/camel-nntp-folder.c
(nntp_folder_set_message_flags): Don't emit message_changed unless
the flags actually changed. Fix the check for marked as seen.
svn path=/trunk/; revision=6797
Diffstat (limited to 'camel/providers')
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 6 | ||||
-rw-r--r-- | camel/providers/local/camel-local-folder.c | 15 | ||||
-rw-r--r-- | camel/providers/nntp/camel-nntp-folder.c | 8 |
3 files changed, 22 insertions, 7 deletions
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index 892eb71d50..5d882856e2 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -799,14 +799,16 @@ imap_set_message_flags (CamelFolder *folder, const char *uid, guint32 flags, gui { CamelImapFolder *imap_folder = (CamelImapFolder *)folder; CamelMessageInfo *info; + guint32 new; info = camel_folder_summary_uid (imap_folder->summary, uid); g_return_if_fail (info != NULL); - if ((info->flags & set) == flags) + new = (info->flags & ~flags) | (set & flags); + if (new == info->flags) return; - info->flags = (info->flags & ~flags) | (set & flags) | CAMEL_MESSAGE_FOLDER_FLAGGED; + info->flags = new | CAMEL_MESSAGE_FOLDER_FLAGGED; camel_folder_summary_touch (imap_folder->summary); camel_object_trigger_event (CAMEL_OBJECT (folder), "message_changed", diff --git a/camel/providers/local/camel-local-folder.c b/camel/providers/local/camel-local-folder.c index c1c3256865..931c95a114 100644 --- a/camel/providers/local/camel-local-folder.c +++ b/camel/providers/local/camel-local-folder.c @@ -436,11 +436,16 @@ local_set_message_flags(CamelFolder *folder, const char *uid, guint32 flags, gui { CamelMessageInfo *info; CamelLocalFolder *mf = CAMEL_LOCAL_FOLDER(folder); + guint32 new; info = camel_folder_summary_uid(CAMEL_FOLDER_SUMMARY(mf->summary), uid); g_return_if_fail(info != NULL); - info->flags = (info->flags & ~flags) | (set & flags) | CAMEL_MESSAGE_FOLDER_FLAGGED; + new = (info->flags & ~flags) | (set & flags); + if (new == info->flags) + return; + + info->flags = new | CAMEL_MESSAGE_FOLDER_FLAGGED; camel_folder_summary_touch(CAMEL_FOLDER_SUMMARY(mf->summary)); camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid); @@ -467,7 +472,9 @@ local_set_message_user_flag(CamelFolder *folder, const char *uid, const char *na info = camel_folder_summary_uid(CAMEL_FOLDER_SUMMARY(mf->summary), uid); g_return_if_fail(info != NULL); - camel_flag_set(&info->user_flags, name, value); + if (!camel_flag_set(&info->user_flags, name, value)) + return; + info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED|CAMEL_MESSAGE_FOLDER_XEVCHANGE; camel_folder_summary_touch(CAMEL_FOLDER_SUMMARY(mf->summary)); camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid); @@ -494,7 +501,9 @@ local_set_message_user_tag(CamelFolder *folder, const char *uid, const char *nam info = camel_folder_summary_uid(CAMEL_FOLDER_SUMMARY(mf->summary), uid); g_return_if_fail(info != NULL); - camel_tag_set(&info->user_tags, name, value); + if (!camel_tag_set(&info->user_tags, name, value)) + return; + info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED|CAMEL_MESSAGE_FOLDER_XEVCHANGE; camel_folder_summary_touch(CAMEL_FOLDER_SUMMARY(mf->summary)); camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid); diff --git a/camel/providers/nntp/camel-nntp-folder.c b/camel/providers/nntp/camel-nntp-folder.c index ba469583e3..f918317502 100644 --- a/camel/providers/nntp/camel-nntp-folder.c +++ b/camel/providers/nntp/camel-nntp-folder.c @@ -97,10 +97,14 @@ nntp_folder_set_message_flags (CamelFolder *folder, const char *uid, { CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (folder); CamelMessageInfo *info = camel_folder_summary_uid (nntp_folder->summary, uid); + guint32 new; - info->flags = set; + new = (info->flags & ~flags) | (set & flags); + if (new == info->flags) + return; - if (set & CAMEL_MESSAGE_SEEN) { + info->flags = new; + if (flags & set & CAMEL_MESSAGE_SEEN) { int article_num; CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (camel_folder_get_parent_store (folder)); |