fix navigation issues from stand-alone message window, sr=mscott 368239

This commit is contained in:
bienvenu%nventure.com 2007-01-26 00:55:20 +00:00
Родитель 98e405fc67
Коммит 3727065ec8
3 изменённых файлов: 44 добавлений и 13 удалений

Просмотреть файл

@ -675,7 +675,7 @@ function backToolbarMenu_init(menuPopup)
populateHistoryMenu(menuPopup, true);
}
var gNavDebug = true;
var gNavDebug = false;
function navDebug(str)
{
if (gNavDebug)
@ -743,17 +743,10 @@ function NavigateToUri(target)
var folder = RDF.GetResource(folderUri).QueryInterface(Components.interfaces.nsIMsgFolder);
var msgHdr = messenger.msgHdrFromURI(msgUri);
navDebug("navigating from " + messenger.navigatePos + " by " + historyIndex + " to " + msgUri + "\n");
navDebug("folderUri = " + folderUri + "\n");
// this "- 0" seems to ensure that historyIndex is treated as an int, not a string.
messenger.navigatePos += historyIndex - 0;
if (IsCurrentLoadedFolder(folder))
{
gDBView.selectMsgByKey(msgHdr.messageKey);
}
else
{
gStartMsgKey = msgHdr.messageKey;
SelectFolder(folderUri);
}
messenger.navigatePos += (historyIndex - 0);
LoadNavigatedToMessage(msgHdr, folder, folderUri);
}
function forwardToolbarMenu_init(menuPopup)

Просмотреть файл

@ -55,6 +55,7 @@ var gNextMessageViewIndexAfterDelete = -2;
var gCurrentFolderToRerootForStandAlone;
var gRerootOnFolderLoadForStandAlone = false;
var gNextMessageAfterLoad = null;
var gMessageToLoad = nsMsgKey_None;
// the folderListener object
var folderListener = {
@ -663,12 +664,16 @@ function SelectFolder(folderUri)
dbview.close();
gCurrentFolderToRerootForStandAlone = folderUri;
msgWindow.openFolder = msgfolder;
if (msgfolder.manyHeadersToDownload)
{
gRerootOnFolderLoadForStandAlone = true;
try
{
// accessing the db causes the folder loaded notification to get sent
// for local folders.
var db = msgfolder.getMsgDatabase(msgWindow);
msgfolder.startFolderLoading();
msgfolder.updateFolder(msgWindow);
}
@ -696,8 +701,13 @@ function RerootFolderForStandAlone(uri)
// create new folder view
CreateView(null);
if (gMessageToLoad != nsMsgKey_None)
{
LoadMessageByMsgKey(gMessageToLoad);
gMessageToLoad = nsMsgKey_None;
}
// now do the work to load the appropriate message
if (gNextMessageAfterLoad) {
else if (gNextMessageAfterLoad) {
var type = gNextMessageAfterLoad;
gNextMessageAfterLoad = null;
LoadMessageByNavigationType(type);
@ -1185,3 +1195,17 @@ function LoadMessageByViewIndex(viewIndex)
if (nsMsgKey_None == gDBView.keyForFirstSelectedMessage)
UpdateMailToolbar("update toolbar for message Window");
}
function LoadNavigatedToMessage(msgHdr, folder, folderUri)
{
if (IsCurrentLoadedFolder(folder))
{
LoadMessageByMsgKey(msgHdr.messageKey);
}
else
{
gMessageToLoad = msgHdr.messageKey;
SelectFolder(folderUri);
}
}

Просмотреть файл

@ -1745,6 +1745,20 @@ function GetFolderAttribute(tree, source, attribute)
return target;
}
function LoadNavigatedToMessage(msgHdr, folder, folderUri)
{
if (IsCurrentLoadedFolder(folder))
{
gDBView.selectMsgByKey(msgHdr.messageKey);
}
else
{
gStartMsgKey = msgHdr.messageKey;
SelectFolder(folderUri);
}
}
// Some of the per account junk mail settings have been
// converted to global prefs. Let's try to migrate some
// of those settings from the default account.