diff --git a/mailnews/imap/src/nsImapMailFolder.cpp b/mailnews/imap/src/nsImapMailFolder.cpp index 1eb4d739840c..6a51d57fba68 100644 --- a/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mailnews/imap/src/nsImapMailFolder.cpp @@ -934,6 +934,26 @@ nsImapMailFolder::MarkAllMessagesRead(void) return rv; } +NS_IMETHODIMP +nsImapMailFolder::MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged) +{ + nsresult rv; + + // tell the folder to do it, which will mark them read in the db. + rv = nsMsgFolder::MarkMessagesFlagged(messages, markFlagged); + if (NS_SUCCEEDED(rv)) + { + nsCString messageIds; + nsMsgKeyArray keysToMarkFlagged; + rv = BuildIdsAndKeyArray(messages, messageIds, keysToMarkFlagged); + if (NS_FAILED(rv)) return rv; + + rv = StoreImapFlags(kImapMsgFlaggedFlag, markFlagged, keysToMarkFlagged); + mDatabase->Commit(nsMsgDBCommitType::kLargeCommit); + } + return rv; +} + NS_IMETHODIMP nsImapMailFolder::Adopt(nsIMsgFolder *srcFolder, PRUint32 *outPos) diff --git a/mailnews/imap/src/nsImapMailFolder.h b/mailnews/imap/src/nsImapMailFolder.h index fcea8b5a3a41..d057db27ce34 100644 --- a/mailnews/imap/src/nsImapMailFolder.h +++ b/mailnews/imap/src/nsImapMailFolder.h @@ -137,6 +137,7 @@ public: NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead); NS_IMETHOD MarkAllMessagesRead(void); + NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged); NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders);