fix selection going away from thread pane if you delete a msg before its finished loading, sr=mscott 183394

This commit is contained in:
bienvenu%nventure.com 2006-02-08 22:42:18 +00:00
parent 8fa21d0d61
commit a16282566c
3 changed files with 15 additions and 5 deletions

View File

@ -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));

View File

@ -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);

View File

@ -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