diff --git a/mozilla/mailnews/base/resources/content/commandglue.js b/mozilla/mailnews/base/resources/content/commandglue.js index 72c966b0628..b719e10142f 100644 --- a/mozilla/mailnews/base/resources/content/commandglue.js +++ b/mozilla/mailnews/base/resources/content/commandglue.js @@ -676,25 +676,11 @@ function OnClickThreadAndMessagePaneSplitter() if(collapsed) { LoadSelectionIntoMessagePane(); - setTimeout("PositionThreadPane();",0); + setTimeout("ScrollToMessage(new,true,true);",0); } */ } -function PositionThreadPane() -{ - dump("XXX fix PositionThreadPane\n"); -/* - var selArray = tree.selectedItems; - - if ( selArray && (selArray.length > 0)) - try { - tree.ensureElementIsVisible(selArray[0]); - } - catch(e) { } -*/ -} - function FolderPaneSelectionChange() { var tree = GetFolderTree(); diff --git a/mozilla/mailnews/base/resources/content/mailWindow.js b/mozilla/mailnews/base/resources/content/mailWindow.js index f46de5a6c0d..cca99c2f8d6 100644 --- a/mozilla/mailnews/base/resources/content/mailWindow.js +++ b/mozilla/mailnews/base/resources/content/mailWindow.js @@ -393,7 +393,6 @@ nsMsgWindowCommands.prototype = }, SelectFolder: function(folderUri) { - SelectFolder(folderUri); }, diff --git a/mozilla/mailnews/base/resources/content/msgMail3PaneWindow.js b/mozilla/mailnews/base/resources/content/msgMail3PaneWindow.js index 4dbdad25009..97daa0368bc 100644 --- a/mozilla/mailnews/base/resources/content/msgMail3PaneWindow.js +++ b/mozilla/mailnews/base/resources/content/msgMail3PaneWindow.js @@ -41,7 +41,7 @@ var gCurrentLoadingFolderViewFlags = 0; var gCurrentDisplayedMessage = null; var gNextMessageAfterDelete = null; -var gNextMessageAfterLoad = false; +var gNextMessageAfterLoad = null; var gNextMessageViewIndexAfterDelete = -1; var gActiveThreadPaneSortColumn = ""; @@ -123,12 +123,14 @@ var folderListener = { gCurrentLoadingFolderViewFlags = 0; SetFocusThreadPane(); + var scrolled = false; if (gNextMessageAfterLoad) { - gNextMessageAfterLoad = false; + var type = gNextMessageAfterLoad; + gNextMessageAfterLoad = null; - // should scroll to new here. - PositionThreadPane(); + // scroll to and select the proper message + scrolled = ScrollToMessage(type, true, true /* selectMessage */); } } } @@ -136,11 +138,15 @@ var folderListener = { { gCurrentLoadingFolderURI = ""; //Now let's select the first new message if there is one - var beforeScrollToNew; + var beforeScrollToNew; if(showPerformance) { beforeScrollToNew = new Date(); } - ScrollToFirstNewMessage(); + if (!scrolled) { + // if we didn't just scroll, scroll to the first new message + // don't select it though + ScrollToMessage(nsMsgNavigationType.firstNew, true, false /* selectMessage */); + } if(showPerformance) { var afterScrollToNew = new Date(); diff --git a/mozilla/mailnews/base/resources/content/msgViewNavigation.js b/mozilla/mailnews/base/resources/content/msgViewNavigation.js index aed620c018a..6ffb5cc5ddb 100644 --- a/mozilla/mailnews/base/resources/content/msgViewNavigation.js +++ b/mozilla/mailnews/base/resources/content/msgViewNavigation.js @@ -71,11 +71,6 @@ function FindNextFolder(originalFolderURI) return null; } -function ScrollToFirstNewMessage() -{ - dump("XXX ScrollToFirstNewMessage needs to be rewritten.\n"); -} - function GetTopLevelMessageForMessage(message, folder) { if(!folder) @@ -90,7 +85,7 @@ function GetTopLevelMessageForMessage(message, folder) return topMessage; } -function CrossFolderNavigation (type, supportsFolderPane ) +function CrossFolderNavigation(type, supportsFolderPane ) { if (type != nsMsgNavigationType.nextUnreadMessage) { @@ -148,38 +143,33 @@ function CrossFolderNavigation (type, supportsFolderPane ) { case 0: // do this unconditionally - gNextMessageAfterLoad = true; + gNextMessageAfterLoad = type; if (supportsFolderPane) SelectFolder(nextFolderURI); - dump("XXX we need code to select the correct type of message, after we load the folder\n"); break; case 1: + default: var promptText = gMessengerBundle.getFormattedString("advanceNextPrompt", [ nextFolder.name ], 1); if (commonDialogs.Confirm(window, promptText, promptText)) { - gNextMessageAfterLoad = true; + gNextMessageAfterLoad = type; if (supportsFolderPane) SelectFolder(nextFolderURI); - dump("XXX we need code to select the correct type of message, after we load the folder\n"); } break; - default: - dump("huh?"); - break; } } return nextFolderURI; } -function GoNextMessage(type, startFromBeginning) +function ScrollToMessage(type, wrap, selectMessage) { + dump("XXX ScrollToMessage " + type + "," + selectMessage + "\n"); try { var outlinerView = gDBView.QueryInterface(Components.interfaces.nsIOutlinerView); var outlinerSelection = outlinerView.selection; var currentIndex = outlinerSelection.currentIndex; - var status = gDBView.navigateStatus(type); - var resultId = new Object; var resultIndex = new Object; var threadIndex = new Object; @@ -188,12 +178,28 @@ function GoNextMessage(type, startFromBeginning) // only scroll and select if we found something if ((resultId.value != -1) && (resultIndex.value != -1)) { - outlinerSelection.select(resultIndex.value); - EnsureRowInThreadOutlinerIsVisible(resultIndex.value); - return; + if (selectMessage) { + outlinerSelection.select(resultIndex.value); + } + EnsureRowInThreadOutlinerIsVisible(resultIndex.value); + return true; + } + else { + return false; + } + } + catch (ex) { + return false; + } +} + +function GoNextMessage(type, startFromBeginning) +{ + try { + var succeeded = ScrollToMessage(type, startFromBeginning, true); + if (!succeeded) { + CrossFolderNavigation(type, true); } - - CrossFolderNavigation(type, true); } catch (ex) { dump("GoNextMessage ex = " + ex + "\n");