diff --git a/mail/base/content/mailContextMenus.js b/mail/base/content/mailContextMenus.js index aa2c2d6234f3..43e712377cc8 100644 --- a/mail/base/content/mailContextMenus.js +++ b/mail/base/content/mailContextMenus.js @@ -311,7 +311,8 @@ function fillFolderPaneContextMenu() ShowMenuItem("folderPaneContext-emptyTrash", (numSelected <= 1) && (specialFolder == 'Trash')); EnableMenuItem("folderPaneContext-emptyTrash", true); - var showSendUnsentMessages = (numSelected <= 1) && (specialFolder == 'Unsent Messages'); + var showSendUnsentMessages = (numSelected <= 1) + && (specialFolder == 'Unsent Messages' || specialFolder == 'Unsent'); ShowMenuItem("folderPaneContext-sendUnsentMessages", showSendUnsentMessages); if (showSendUnsentMessages) { EnableMenuItem("folderPaneContext-sendUnsentMessages", IsSendUnsentMsgsEnabled(folderResource)); diff --git a/mail/base/content/mailWindowOverlay.js b/mail/base/content/mailWindowOverlay.js index bd926d27aa12..e52e04d8dd55 100644 --- a/mail/base/content/mailWindowOverlay.js +++ b/mail/base/content/mailWindowOverlay.js @@ -371,11 +371,11 @@ function viewRefreshCustomMailViews(aCurrentViewValue) // see mailWindowOverlay.xul function ViewMessagesBy(id) { - var viewPicker = document.getElementById('viewPicker'); - if (viewPicker) + var viewPicker = document.getElementById('viewPicker'); + if (viewPicker) { viewPicker.selectedItem = document.getElementById(id); - viewChange(viewPicker, viewPicker.value); + viewChange(viewPicker, viewPicker.value); } } @@ -2314,7 +2314,12 @@ function OnMsgLoaded(aUrl) // if the user clicks on another message then that message stays selected // and the selection does not "snap back" to the message chosen by // SetNextMessageAfterDelete() when the operation completes (bug 243532). - gNextMessageViewIndexAfterDelete = -2; + // But the just loaded message might be getting deleted, if the user + // deletes it before the message is loaded (bug 183394) + var treeSelection = GetThreadTree().view.selection; + + if (treeSelection.currentIndex != gSelectedIndexWhenDeleting) + gNextMessageViewIndexAfterDelete = -2; if (!(/type=application\/x-message-display/.test(msgURI))) msgHdr = messenger.messageServiceFromURI(msgURI).messageURIToMsgHdr(msgURI); diff --git a/mail/base/content/msgMail3PaneWindow.js b/mail/base/content/msgMail3PaneWindow.js index 4568391cd8c1..4e263564caa2 100644 --- a/mail/base/content/msgMail3PaneWindow.js +++ b/mail/base/content/msgMail3PaneWindow.js @@ -76,6 +76,7 @@ var gCurrentDisplayedMessage = null; var gNextMessageAfterDelete = null; var gNextMessageAfterLoad = null; var gNextMessageViewIndexAfterDelete = -2; +var gSelectedIndexWhenDeleting = -1; var gCurrentlyDisplayedMessage=nsMsgViewIndex_None; var gStartFolderUri = null; var gStartMsgKey = nsMsgKey_None; @@ -1554,7 +1555,10 @@ function SetNextMessageAfterDelete() var treeSelection = GetThreadTree().view.selection; if (treeSelection.isSelected(treeSelection.currentIndex)) + { gNextMessageViewIndexAfterDelete = gDBView.msgToSelectAfterDelete; + gSelectedIndexWhenDeleting = treeSelection.currentIndex; + } else if(gDBView.removeRowOnMoveOrDelete) { // Only set gThreadPaneDeleteOrMoveOccurred to true if the message was