From 4f99056b99d21347ea262906c29794430b853c02 Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Fri, 1 Oct 2004 19:06:55 +0000 Subject: [PATCH] fix 261682 sr=mscott when in non-default view, automatic update of folder causes a re-search which recreates the view --- .../base/resources/content/commandglue.js | 15 ++++- .../resources/content/msgMail3PaneWindow.js | 61 +++++++++++-------- mailnews/base/resources/content/searchBar.js | 26 +++++--- 3 files changed, 67 insertions(+), 35 deletions(-) diff --git a/mailnews/base/resources/content/commandglue.js b/mailnews/base/resources/content/commandglue.js index 33845121f2ad..ef4e575c8007 100644 --- a/mailnews/base/resources/content/commandglue.js +++ b/mailnews/base/resources/content/commandglue.js @@ -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); +} + diff --git a/mailnews/base/resources/content/msgMail3PaneWindow.js b/mailnews/base/resources/content/msgMail3PaneWindow.js index 52878e0fc882..cfe3ff0e2f27 100644 --- a/mailnews/base/resources/content/msgMail3PaneWindow.js +++ b/mailnews/base/resources/content/msgMail3PaneWindow.js @@ -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")); + } } } } diff --git a/mailnews/base/resources/content/searchBar.js b/mailnews/base/resources/content/searchBar.js index 41b89518cbf2..7132dba3deb5 100644 --- a/mailnews/base/resources/content/searchBar.js +++ b/mailnews/base/resources/content/searchBar.js @@ -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);