fix #72262 and #72269. when loading a folder, scroll to the first new message (but don't select it.) when loading a folder while doing cross folder navigation, scroll to and select the proper messsage. r=mscott, sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@91248 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
04121d876f
commit
56acdd67fa
@ -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();
|
||||
|
||||
@ -393,7 +393,6 @@ nsMsgWindowCommands.prototype =
|
||||
},
|
||||
SelectFolder: function(folderUri)
|
||||
{
|
||||
|
||||
SelectFolder(folderUri);
|
||||
|
||||
},
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user