зеркало из https://github.com/mozilla/gecko-dev.git
fix problem reading unread imap msg from mem cache not marking msg read r=naving,sr=sspitzer 24787
This commit is contained in:
Родитель
bf9ef32d15
Коммит
6854b90991
|
@ -534,35 +534,6 @@ NS_IMETHODIMP nsImapService::DisplayMessage(const char* aMessageURI,
|
|||
|
||||
rv = FetchMessage(imapUrl, nsIImapUrl::nsImapMsgFetch, folder, imapMessageSink,
|
||||
aMsgWindow, aURL, aDisplayConsumer, msgKey, PR_TRUE);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
imapUrl->GetMsgLoadingFromCache(&msgLoadingFromCache);
|
||||
// we're reading this msg from the cache - mark it read on the server.
|
||||
if (msgLoadingFromCache)
|
||||
{
|
||||
nsCOMPtr <nsIMsgDatabase> database;
|
||||
if (NS_SUCCEEDED(folder->GetMsgDatabase(nsnull, getter_AddRefs(database))) && database)
|
||||
{
|
||||
PRBool msgRead = PR_TRUE;
|
||||
database->IsRead(key, &msgRead);
|
||||
if (!msgRead)
|
||||
{
|
||||
nsCOMPtr<nsISupportsArray> messages;
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(messages));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
nsCOMPtr<nsIMsgDBHdr> message;
|
||||
GetMsgDBHdrFromURI(aMessageURI, getter_AddRefs(message));
|
||||
nsCOMPtr<nsISupports> msgSupport(do_QueryInterface(message, &rv));
|
||||
if (msgSupport)
|
||||
{
|
||||
messages->AppendElement(msgSupport);
|
||||
folder->MarkMessagesRead(messages, PR_TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
|
|
@ -1210,7 +1210,48 @@ NS_IMETHODIMP nsImapUrl::GetUri(char** aURI)
|
|||
|
||||
NS_IMPL_GETSET(nsImapUrl, AddDummyEnvelope, PRBool, m_addDummyEnvelope);
|
||||
NS_IMPL_GETSET(nsImapUrl, CanonicalLineEnding, PRBool, m_canonicalLineEnding);
|
||||
NS_IMPL_GETSET(nsImapUrl, MsgLoadingFromCache, PRBool, m_msgLoadingFromCache);
|
||||
NS_IMPL_GETTER(nsImapUrl::GetMsgLoadingFromCache, PRBool, m_msgLoadingFromCache);
|
||||
|
||||
NS_IMETHODIMP nsImapUrl::SetMsgLoadingFromCache(PRBool loadingFromCache)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
m_msgLoadingFromCache = loadingFromCache;
|
||||
if (loadingFromCache)
|
||||
{
|
||||
nsCOMPtr<nsIMsgFolder> folder;
|
||||
nsMsgKey key;
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
nsCAutoString folderURI;
|
||||
rv = nsParseImapMessageURI(mURI, folderURI, &key, nsnull);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = GetMsgFolder(getter_AddRefs(folder));
|
||||
|
||||
nsCOMPtr <nsIMsgDatabase> database;
|
||||
if (folder && NS_SUCCEEDED(folder->GetMsgDatabase(nsnull, getter_AddRefs(database))) && database)
|
||||
{
|
||||
PRBool msgRead = PR_TRUE;
|
||||
database->IsRead(key, &msgRead);
|
||||
if (!msgRead)
|
||||
{
|
||||
nsCOMPtr<nsISupportsArray> messages;
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(messages));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
nsCOMPtr<nsIMsgDBHdr> message;
|
||||
GetMsgDBHdrFromURI(mURI, getter_AddRefs(message));
|
||||
nsCOMPtr<nsISupports> msgSupport(do_QueryInterface(message, &rv));
|
||||
if (msgSupport)
|
||||
{
|
||||
messages->AppendElement(msgSupport);
|
||||
folder->MarkMessagesRead(messages, PR_TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImapUrl::SetMessageFile(nsIFileSpec * aFileSpec)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче