From 0e8c89168c531456f35f013e809dc1c15cbba91b Mon Sep 17 00:00:00 2001 From: "rjc%netscape.com" Date: Thu, 30 Dec 1999 14:16:17 +0000 Subject: [PATCH] Add support for automatically opening the "Search Results" panel in the sidebar when the "Search" button is clicked on. [Note: this behavior can be turned off via a preference in the "Search" preferences panel.] --- suite/browser/navigator.js | 41 +++++++++++++++++++ suite/common/pref/pref-search.xul | 17 ++++++-- .../en-US/chrome/common/pref/pref-search.dtd | 5 ++- xpfe/browser/resources/content/navigator.js | 41 +++++++++++++++++++ .../resources/content/pref-search.xul | 17 ++++++-- .../resources/locale/en-US/pref-search.dtd | 5 ++- 6 files changed, 116 insertions(+), 10 deletions(-) diff --git a/suite/browser/navigator.js b/suite/browser/navigator.js index 16125881c60d..a2ddc5fded3f 100644 --- a/suite/browser/navigator.js +++ b/suite/browser/navigator.js @@ -881,14 +881,18 @@ function OpenSearch(tabName, searchStr) { var searchMode = 0; var searchEngineURI = null; + var autoOpenSearchPanel = false; try { searchMode = pref.GetIntPref("browser.search.powermode"); searchEngineURI = pref.CopyCharPref("browser.search.defaultengine"); + autoOpenSearchPanel = pref.GetBoolPref("browser.search.opensidebarsearchpanel"); } catch(ex) { searchMode = 0; + searchEngineURI = null; + autoOpenSearchPanel = false; } if (searchMode == 1) { @@ -925,6 +929,43 @@ function OpenSearch(tabName, searchStr) } window.content.location.href = defaultSearchURL; } + + // rjc Note: the following is all a hack until the sidebar has appropriate APIs + // to check whether its shown/hidden, open/closed, and can show a particular panel + + // should we try and open up the sidebar to show the "Search Results" panel? + if (autoOpenSearchPanel == true) + { + var sidebar = document.getElementById('sidebar-box'); + var sidebar_splitter = document.getElementById('sidebar-splitter'); + var searchPanel = document.getElementById("urn:sidebar:panel:search"); + + if (sidebar && sidebar_splitter && searchPanel) + { + var is_hidden = sidebar.getAttribute('hidden'); + if (is_hidden && is_hidden == "true") + { + { + sidebarShowHide(); + } + } + var sidebar_style = sidebar.getAttribute("style"); + if (sidebar_style) + { + var visibility = sidebar_style.match('visibility:([^;]*)') + if (visibility) + { + visibility = visibility[1]; + if (visibility.indexOf("collapse") >= 0) + { + sidebar.removeAttribute("style"); + sidebar.setAttribute("style", "width:100%; height:100%; hidden:false; visibility:show;"); + } + } + } + sidebarOpenClosePanel(searchPanel); + } + } } function BrowserNewWindow() diff --git a/suite/common/pref/pref-search.xul b/suite/common/pref/pref-search.xul index a60e7ff0bd15..5b89b8177733 100755 --- a/suite/common/pref/pref-search.xul +++ b/suite/common/pref/pref-search.xul @@ -47,7 +47,7 @@ - + &browserSearchButtonText.label; @@ -68,12 +68,23 @@ - - + + &enablePowerSearch.label; + + + + + + + + &openSidebarSearchPanel.label; + + + diff --git a/suite/locales/en-US/chrome/common/pref/pref-search.dtd b/suite/locales/en-US/chrome/common/pref/pref-search.dtd index ff399e8f2323..6c36e587cf34 100755 --- a/suite/locales/en-US/chrome/common/pref/pref-search.dtd +++ b/suite/locales/en-US/chrome/common/pref/pref-search.dtd @@ -8,5 +8,6 @@ - - + + + diff --git a/xpfe/browser/resources/content/navigator.js b/xpfe/browser/resources/content/navigator.js index 16125881c60d..a2ddc5fded3f 100644 --- a/xpfe/browser/resources/content/navigator.js +++ b/xpfe/browser/resources/content/navigator.js @@ -881,14 +881,18 @@ function OpenSearch(tabName, searchStr) { var searchMode = 0; var searchEngineURI = null; + var autoOpenSearchPanel = false; try { searchMode = pref.GetIntPref("browser.search.powermode"); searchEngineURI = pref.CopyCharPref("browser.search.defaultengine"); + autoOpenSearchPanel = pref.GetBoolPref("browser.search.opensidebarsearchpanel"); } catch(ex) { searchMode = 0; + searchEngineURI = null; + autoOpenSearchPanel = false; } if (searchMode == 1) { @@ -925,6 +929,43 @@ function OpenSearch(tabName, searchStr) } window.content.location.href = defaultSearchURL; } + + // rjc Note: the following is all a hack until the sidebar has appropriate APIs + // to check whether its shown/hidden, open/closed, and can show a particular panel + + // should we try and open up the sidebar to show the "Search Results" panel? + if (autoOpenSearchPanel == true) + { + var sidebar = document.getElementById('sidebar-box'); + var sidebar_splitter = document.getElementById('sidebar-splitter'); + var searchPanel = document.getElementById("urn:sidebar:panel:search"); + + if (sidebar && sidebar_splitter && searchPanel) + { + var is_hidden = sidebar.getAttribute('hidden'); + if (is_hidden && is_hidden == "true") + { + { + sidebarShowHide(); + } + } + var sidebar_style = sidebar.getAttribute("style"); + if (sidebar_style) + { + var visibility = sidebar_style.match('visibility:([^;]*)') + if (visibility) + { + visibility = visibility[1]; + if (visibility.indexOf("collapse") >= 0) + { + sidebar.removeAttribute("style"); + sidebar.setAttribute("style", "width:100%; height:100%; hidden:false; visibility:show;"); + } + } + } + sidebarOpenClosePanel(searchPanel); + } + } } function BrowserNewWindow() diff --git a/xpfe/components/prefwindow/resources/content/pref-search.xul b/xpfe/components/prefwindow/resources/content/pref-search.xul index a60e7ff0bd15..5b89b8177733 100755 --- a/xpfe/components/prefwindow/resources/content/pref-search.xul +++ b/xpfe/components/prefwindow/resources/content/pref-search.xul @@ -47,7 +47,7 @@ - + &browserSearchButtonText.label; @@ -68,12 +68,23 @@ - - + + &enablePowerSearch.label; + + + + + + + + &openSidebarSearchPanel.label; + + + diff --git a/xpfe/components/prefwindow/resources/locale/en-US/pref-search.dtd b/xpfe/components/prefwindow/resources/locale/en-US/pref-search.dtd index ff399e8f2323..6c36e587cf34 100755 --- a/xpfe/components/prefwindow/resources/locale/en-US/pref-search.dtd +++ b/xpfe/components/prefwindow/resources/locale/en-US/pref-search.dtd @@ -8,5 +8,6 @@ - - + + +