зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
1cd531b667
Коммит
4f99056b99
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче