fix 261682 sr=mscott when in non-default view, automatic update of folder causes a re-search which recreates the view

This commit is contained in:
bienvenu%nventure.com 2004-10-01 19:06:55 +00:00
Родитель 1cd531b667
Коммит 4f99056b99
3 изменённых файлов: 67 добавлений и 35 удалений

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

@ -358,6 +358,7 @@ function RerootFolder(uri, newFolder, viewType, viewFlags, sortType, sortOrder)
// this is to kick off cross-folder searches for virtual folders.
if (gSearchSession && !gVirtualFolderTerms) // another var might be better...
{
viewDebug("doing a xf folder search in rerootFolder\n");
gDBView.searchSession = gSearchSession;
gSearchSession.search(msgWindow);
}
@ -855,6 +856,7 @@ function FolderPaneSelectionChange()
viewType = nsMsgViewType.eShowVirtualFolderResults;
gXFVirtualFolderTerms = CreateGroupedSearchTerms(tempFilter.searchTerms);
setupXFVirtualFolderSearch(srchFolderUriArray, gXFVirtualFolderTerms);
gSearchInput.showingSearchCriteria = false;
// need to set things up so that reroot folder issues the search
}
else
@ -900,7 +902,9 @@ function FolderPaneSelectionChange()
}
ClearMessagePane();
if (gSearchEmailAddress || gDefaultSearchViewTerms || gVirtualFolderTerms)
if (gXFVirtualFolderTerms)
viewType = nsMsgViewType.eShowVirtualFolderResults;
else if (gSearchEmailAddress || gDefaultSearchViewTerms || gVirtualFolderTerms)
viewType = nsMsgViewType.eShowQuickSearchResults;
else if (viewType == nsMsgViewType.eShowQuickSearchResults)
viewType = nsMsgViewType.eShowAllThreads; //override viewType - we don't want to start w/ quick search
@ -1158,3 +1162,12 @@ function CreateGroupedSearchTerms(searchTermsArray)
}
return searchTermsArrayForQS;
}
var gViewDebug = false;
function viewDebug(str)
{
if (gViewDebug)
dump(str);
}

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

@ -136,7 +136,9 @@ var folderListener = {
if (eventType == "FolderLoaded") {
if (folder) {
var uri = folder.URI;
if (uri == gCurrentFolderToReroot) {
var rerootingFolder = (uri == gCurrentFolderToReroot);
if (rerootingFolder) {
viewDebug("uri = gCurrentFolderToReroot, setting gQSViewIsDirty\n");
gQSViewIsDirty = true;
gCurrentFolderToReroot = null;
var msgFolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);
@ -188,7 +190,7 @@ var folderListener = {
// if you change the scrolling code below,
// double check the scrolling logic in
// searchBar.js, restorePreSearchView()
viewDebug("uri == current loading folder uri\n");
gCurrentLoadingFolderURI = "";
// if we didn't just scroll,
@ -246,30 +248,39 @@ var folderListener = {
}
}
//folder loading is over, now issue quick search if there is an email address
// dump("in folder loaded gVirtualFolderTerms = " + gVirtualFolderTerms + "\n");
if (gSearchEmailAddress)
viewDebug("in folder loaded gVirtualFolderTerms = " + gVirtualFolderTerms + "\n");
viewDebug("in folder loaded gMsgFolderSelected = " + gMsgFolderSelected.URI + "\n");
if (rerootingFolder)
{
Search(gSearchEmailAddress);
gSearchEmailAddress = null;
}
else if (gVirtualFolderTerms)
{
gDefaultSearchViewTerms = null;
ViewChangeByValue(-1); // override current view
Search("");
// gVirtualFolderTerms = null;
}
else if (gMsgFolderSelected.flags & MSG_FOLDER_FLAG_VIRTUAL)
{
gDefaultSearchViewTerms = null;
}
else if (gDefaultSearchViewTerms)
{
Search("");
}
else
{
ViewChangeByValue(pref.getIntPref("mailnews.view.last"));
if (gSearchEmailAddress)
{
Search(gSearchEmailAddress);
gSearchEmailAddress = null;
}
else if (gVirtualFolderTerms)
{
gDefaultSearchViewTerms = null;
ViewChangeByValue(-1); // override current view
viewDebug("searching gVirtualFolderTerms\n");
Search("");
// gVirtualFolderTerms = null;
}
else if (gMsgFolderSelected.flags & MSG_FOLDER_FLAG_VIRTUAL)
{
viewDebug("selected folder is virtual\n");
gDefaultSearchViewTerms = null;
ViewChangeByValue(-1); // override current view
}
else if (gDefaultSearchViewTerms)
{
viewDebug("searching gDefaultSearchViewTerms and rerootingFolder\n");
Search("");
}
else
{
viewDebug("changing view by value\n");
ViewChangeByValue(pref.getIntPref("mailnews.view.last"));
}
}
}
}

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

@ -184,7 +184,7 @@ function initializeSearchBar()
function onEnterInSearchBar()
{
// dump ("onEnterInSearchBar gSearchInput.value = " + gSearchInput.value + " showing criteria = " + gSearchInput.showingSearchCriteria +"\n");
viewDebug ("onEnterInSearchBar gSearchInput.value = " + gSearchInput.value + " showing criteria = " + gSearchInput.showingSearchCriteria +"\n");
if (gSearchInput.value == "" /* || gSearchInput.showingSearchCriteria */)
{
@ -194,19 +194,19 @@ function onEnterInSearchBar()
statusFeedback.showStatusString("");
disableQuickSearchClearButton();
// dump ("onEnterInSearchBar gDefaultSearchViewTerms = " + gDefaultSearchViewTerms + "gVirtualFolderTerms = "
// + gVirtualFolderTerms + "gXFVirtualFolderTerms = " + gXFVirtualFolderTerms + "\n");
viewDebug ("onEnterInSearchBar gDefaultSearchViewTerms = " + gDefaultSearchViewTerms + "gVirtualFolderTerms = "
+ gVirtualFolderTerms + "gXFVirtualFolderTerms = " + gXFVirtualFolderTerms + "\n");
var addTerms = gDefaultSearchViewTerms || gVirtualFolderTerms || gXFVirtualFolderTerms;
if (addTerms)
{
// dump ("addTerms = " + addTerms + " count = " + addTerms.Count() + "\n");
viewDebug ("addTerms = " + addTerms + " count = " + addTerms.Count() + "\n");
initializeSearchBar();
onSearch(addTerms);
}
else if (gPreQuickSearchView)
else
restorePreSearchView();
}
else if (gPreQuickSearchView && !gDefaultSearchViewTerms)// maybe a quick search from a cross-folder virtual folder
else if (gPreQuickSearchView && !gDefaultSearchViewTerms)// may be a quick search from a cross-folder virtual folder
restorePreSearchView();
// gSearchInput.showingSearchCriteria = true;
@ -331,6 +331,7 @@ function restorePreSearchView()
function onSearch(aSearchTerms)
{
viewDebug("in OnSearch, searchTerms = " + aSearchTerms + "\n");
RerootThreadPane();
if (aSearchTerms)
@ -368,6 +369,7 @@ function createSearchTermsWithList(aTermsArray)
{
var dbFolderInfo = msgDatabase.dBFolderInfo;
var srchFolderUri = dbFolderInfo.getCharPtrProperty("searchFolderUri");
viewDebug("createSearchTermsWithList xf vf scope = " + srchFolderUri + "\n");
var srchFolderUriArray = srchFolderUri.split('|');
for (var i in srchFolderUriArray)
{
@ -379,7 +381,10 @@ function createSearchTermsWithList(aTermsArray)
}
}
else
{
viewDebug ("in createSearchTermsWithList, adding scope term for selected folder\n");
gSearchSession.addScopeTerm(nsMsgSearchScope.offlineMail, selectedFolder);
}
// add each item in termsArray to the search session
var termsArray = aTermsArray.QueryInterface(Components.interfaces.nsISupportsArray);
@ -432,8 +437,8 @@ function createSearchTerms()
// now append the default view or virtual folder criteria to the quick search
// so we don't lose any default view information
// dump("gDefaultSearchViewTerms = " + gDefaultSearchViewTerms + "gVirtualFolderTerms = " + gVirtualFolderTerms +
// "gXFVirtualFolderTerms = " + gXFVirtualFolderTerms + "\n");
viewDebug("gDefaultSearchViewTerms = " + gDefaultSearchViewTerms + "gVirtualFolderTerms = " + gVirtualFolderTerms +
"gXFVirtualFolderTerms = " + gXFVirtualFolderTerms + "\n");
var defaultSearchTerms = (gDefaultSearchViewTerms || gVirtualFolderTerms || gXFVirtualFolderTerms);
if (defaultSearchTerms)
{
@ -514,12 +519,15 @@ function ClearQSIfNecessary()
function Search(str)
{
// dump("in Search str = " + str + "gSearchInput.showingSearchCriteria = " + gSearchInput.showingSearchCriteria + "\n");
viewDebug("in Search str = " + str + "gSearchInput.showingSearchCriteria = " + gSearchInput.showingSearchCriteria + "\n");
GetSearchInput();
if (str != gSearchInput.value)
{
gQSViewIsDirty = true;
viewDebug("in Search(), setting gQSViewIsDirty true\n");
}
gSearchInput.value = str; //on input does not get fired for some reason
onSearchInput(true);