diff --git a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp index 0133fe6d4c8..eebe080d6eb 100644 --- a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp @@ -2480,6 +2480,16 @@ nsImapMailFolder::OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopy messageIds.GetBuffer(), kImapMsgDeletedFlag, PR_TRUE); + if (NS_SUCCEEDED(rv)) + { + nsMsgKeyArray affectedMessages; + char *keyTokenString = messageIds.ToNewCString(); + ParseUidString(keyTokenString, affectedMessages); + if (mDatabase) + mDatabase->DeleteMessages(&affectedMessages,NULL); + nsCRT::free(keyTokenString); + return rv; + } } /* unhandled action */ else return NS_ERROR_FAILURE; diff --git a/mozilla/mailnews/imap/src/nsImapService.cpp b/mozilla/mailnews/imap/src/nsImapService.cpp index 0c047246af7..29cc9789a4c 100644 --- a/mozilla/mailnews/imap/src/nsImapService.cpp +++ b/mozilla/mailnews/imap/src/nsImapService.cpp @@ -357,10 +357,14 @@ nsImapService::CopyMessages(nsMsgKeyArray *keys, nsIMsgFolder *srcFolder, nsIStr nsCAutoString urlSpec; PRUnichar hierarchySeparator = '/'; rv = CreateStartOfImapUrl(getter_AddRefs(imapUrl), folder, aUrlListener, urlSpec, hierarchySeparator); - + nsIImapUrl::nsImapAction action; + if (moveMessage) + action = nsIImapUrl::nsImapOnlineToOfflineMove; + else + action = nsIImapUrl::nsImapOnlineToOfflineCopy; imapUrl->SetCopyState(aMailboxCopy); // now try to display the message - rv = FetchMessage(imapUrl, nsIImapUrl::nsImapMsgFetch, folder, imapMessageSink, + rv = FetchMessage(imapUrl, action, folder, imapMessageSink, aURL, streamSupport, messageIds.GetBuffer(), PR_TRUE); // ### end of copy operation should know how to do the delete.if this is a move @@ -455,8 +459,7 @@ nsImapService::FetchMessage(nsIImapUrl * aImapUrl, return NS_ERROR_NULL_POINTER; nsCAutoString urlSpec; - nsresult rv = aImapUrl->SetImapAction(aImapAction /* nsIImapUrl::nsImapMsgFetch */); - rv = SetImapUrlSink(aImapMailFolder, aImapUrl); + nsresult rv = SetImapUrlSink(aImapMailFolder, aImapUrl); rv = aImapUrl->SetImapMessageSink(aImapMessage); if (NS_SUCCEEDED(rv)) @@ -487,6 +490,7 @@ nsImapService::FetchMessage(nsIImapUrl * aImapUrl, // const char *. hopefully they will fix it soon. rv = url->SetSpec((char *) urlSpec.GetBuffer()); + rv = aImapUrl->SetImapAction(aImapAction /* nsIImapUrl::nsImapMsgFetch */); if (aImapMailFolder && aDisplayConsumer) { nsCOMPtr aMsgIncomingServer;