diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index 37d4fc420..08c12772a 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -1647,13 +1647,27 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) - (int) setReadFlag: (uint8_t) flag { + BOOL modified = NO; + BOOL alreadyRead = NO; NSString *imapFlag = @"\\Seen"; + alreadyRead = [[[sogoObject fetchCoreInfos] objectForKey: @"flags"] + containsObject: @"seen"]; + /* TODO: notifications should probably be emitted from here */ if (flag & CLEAR_READ_FLAG) - [sogoObject removeFlags: imapFlag]; + { + [sogoObject removeFlags: imapFlag]; + modified = alreadyRead; + } else - [sogoObject addFlags: imapFlag]; + { + [sogoObject addFlags: imapFlag]; + modified = !alreadyRead; + } + + if (modified) + [(MAPIStoreMailFolder *)[self container] synchroniseCache]; return MAPISTORE_SUCCESS; }