Fix sidebar popopen on search (51694). Move all the logic into sidebarOverlay.js. r=pavlov

This commit is contained in:
slamm%netscape.com 2000-09-11 23:27:16 +00:00
Родитель b0f721e9bf
Коммит e52dd093cd
3 изменённых файлов: 69 добавлений и 35 удалений

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

@ -846,28 +846,14 @@ function setBrowserSearchMode(searchMode)
function RevealSearchPanel() function RevealSearchPanel()
{ {
// rjc Note: the following is all a hack until the sidebar has appropriate APIs var should_popopen = true;
// to check whether its shown/hidden, open/closed, and can show a particular panel var should_unhide = true;
var searchPanel = document.getElementById("urn:sidebar:panel:search");
var sidebar = document.getElementById("sidebar-box"); if (searchPanel) {
var sidebar_splitter = document.getElementById("sidebar-splitter"); // SidebarSelectPanel() lives in sidebarOverlay.js
var searchPanel = document.getElementById("urn:sidebar:panel:search"); SidebarSelectPanel(searchPanel, should_popopen, should_unhide);
}
if (sidebar && sidebar_splitter && searchPanel)
{
var is_hidden = sidebar.getAttribute("hidden");
if (is_hidden && is_hidden == "true")
{
// SidebarShowHide() lives in sidebarOverlay.js
SidebarShowHide();
}
var splitter_state = sidebar_splitter.getAttribute("state");
if (splitter_state && splitter_state == "collapsed") {
sidebar_splitter.removeAttribute("state");
}
// SidebarSelectPanel() lives in sidebarOverlay.js
SidebarSelectPanel(searchPanel);
}
} }
function BrowserNewWindow() function BrowserNewWindow()

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

@ -216,8 +216,7 @@ function (force_reload)
// parameter to allow the value to be persisted in localstore.rdf. // parameter to allow the value to be persisted in localstore.rdf.
var selected_id = this.node.getAttribute('last-selected-panel'); var selected_id = this.node.getAttribute('last-selected-panel');
var sidebar_box = document.getElementById('sidebar-box'); if (sidebar_is_collapsed()) {
if (sidebar_box.getAttribute('collapsed') == 'true') {
sidebarObj.collapsed = true; sidebarObj.collapsed = true;
} else { } else {
sidebarObj.collapsed = false; sidebarObj.collapsed = false;
@ -538,7 +537,7 @@ function sidebar_overlay_init() {
// XXX This is a hack to force re-display // XXX This is a hack to force re-display
panels.setAttribute('ref', sidebarObj.resource); panels.setAttribute('ref', sidebarObj.resource);
} }
if (sidebar_element.getAttribute('collapsed') == 'true') { if (sidebar_is_collapsed()) {
sidebarObj.collapsed = true; sidebarObj.collapsed = true;
} else { } else {
sidebarObj.collapsed = false; sidebarObj.collapsed = false;
@ -701,9 +700,39 @@ function sidebar_fixup_datasource() {
// Change the sidebar content to the selected panel. // Change the sidebar content to the selected panel.
// Called when a panel title is clicked. // Called when a panel title is clicked.
function SidebarSelectPanel(header) { function SidebarSelectPanel(header, should_popopen, should_unhide) {
debug("SidebarSelectPanel("+header+","+should_popopen+","+should_unhide+")");
var panel = sidebarObj.panels.get_panel_from_header_node(header); var panel = sidebarObj.panels.get_panel_from_header_node(header);
panel.select(false);
if (!panel) {
return false;
}
var popopen = false;
var unhide = false;
if (panel.is_excluded()) {
return false;
}
if (sidebar_is_hidden()) {
if (should_unhide) {
unhide = true;
} else {
return false;
}
}
if (sidebar_is_collapsed()) {
if (should_popopen) {
popopen = true;
} else {
return false;
}
}
if (unhide) SidebarShowHide();
if (popopen) SidebarExpandCollapse();
if (!panel.is_selected()) panel.select(false);
return true;
} }
function SidebarStopPanelLoad(header) { function SidebarStopPanelLoad(header) {
@ -756,6 +785,25 @@ function SidebarCustomize() {
} }
} }
function sidebar_is_collapsed() {
var sidebar_splitter = document.getElementById('sidebar-splitter');
return sidebar_splitter.getAttribute('state') == 'collapsed';
}
function SidebarExpandCollapse() {
var sidebar_splitter = document.getElementById('sidebar-splitter');
var sidebar_box = document.getElementById('sidebar-box');
if (sidebar_splitter.getAttribute('state') == 'collapsed') {
debug("Expanding the sidebar");
sidebar_splitter.removeAttribute('state');
sidebar_box.removeAttribute('collapsed');
} else {
debug("Collapsing the sidebar");
sidebar_splitter.setAttribute('state', 'collapsed');
sidebar_box.setAttribute('collapsed', 'true');
}
}
// sidebar_is_hidden() - Helper funciton for SidebarShowHide(). // sidebar_is_hidden() - Helper funciton for SidebarShowHide().
function sidebar_is_hidden() { function sidebar_is_hidden() {
var sidebar_title = document.getElementById('sidebar-title-box'); var sidebar_title = document.getElementById('sidebar-title-box');
@ -766,9 +814,9 @@ function sidebar_is_hidden() {
// Show/Hide the entire sidebar. // Show/Hide the entire sidebar.
// Envoked by the "View / My Sidebar" menu option. // Envoked by the "View / My Sidebar" menu option.
function SidebarShowHide(title_id) { function SidebarShowHide() {
var sidebar_box = document.getElementById('sidebar-box'); var sidebar_box = document.getElementById('sidebar-box');
var title_box = document.getElementById(title_id); var title_box = document.getElementById('sidebar-title-box');
var sidebar_panels_splitter = document.getElementById('sidebar-panels-splitter'); var sidebar_panels_splitter = document.getElementById('sidebar-panels-splitter');
var sidebar_panels_splitter_box = document.getElementById('sidebar-panels-splitter-box'); var sidebar_panels_splitter_box = document.getElementById('sidebar-panels-splitter-box');
var sidebar_splitter = document.getElementById('sidebar-splitter'); var sidebar_splitter = document.getElementById('sidebar-splitter');
@ -880,8 +928,8 @@ function SidebarTogglePanel(panel_menuitem) {
// Sidebar Hacks and Work-arounds // Sidebar Hacks and Work-arounds
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
// SidebarExpandCollapse() - Respond to grippy click. // SidebarCleanUpExpandCollapse() - Respond to grippy click.
function SidebarExpandCollapse() { function SidebarCleanUpExpandCollapse() {
// XXX Mini hack. Persist isn't working too well. Force the persist, // XXX Mini hack. Persist isn't working too well. Force the persist,
// but wait until the change has commited. // but wait until the change has commited.
setTimeout("document.persist('sidebar-box', 'collapsed');",100); setTimeout("document.persist('sidebar-box', 'collapsed');",100);

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

@ -99,9 +99,9 @@
predicate="http://home.netscape.com/NC-rdf#exclude" /> predicate="http://home.netscape.com/NC-rdf#exclude" />
</bindings> </bindings>
<action> <action>
<box uri="?panel" class="box-texttab texttab-sidebar" align="left" <box uri="?panel" class="box-texttab texttab-sidebar"
onclick="SidebarSelectPanel(this)" hidden="true" onclick="SidebarSelectPanel(this,false,false)" align="left"
value="?title" exclude="?exclude" /> hidden="true" value="?title" exclude="?exclude" />
<box uri="?panel" flex='1*' hidden="true" orient="vertical" <box uri="?panel" flex='1*' hidden="true" orient="vertical"
loadstate="never loaded"> loadstate="never loaded">
<box flex='1' orient="vertical" class="iframe-panel loadarea"> <box flex='1' orient="vertical" class="iframe-panel loadarea">
@ -138,7 +138,7 @@
orient="vertical" orient="vertical"
onmouseup="SidebarFinishClick();"> onmouseup="SidebarFinishClick();">
<grippy class="sidebar-splitter-grippy" <grippy class="sidebar-splitter-grippy"
onclick="SidebarExpandCollapse();"/> onclick="SidebarCleanUpExpandCollapse();"/>
</splitter> </splitter>
<!-- View->Sidebar toggle --> <!-- View->Sidebar toggle -->
@ -146,7 +146,7 @@
<menuitem id="sidebar-menu" type="checkbox" <menuitem id="sidebar-menu" type="checkbox"
value="&sidebarCmd.label;" value="&sidebarCmd.label;"
accesskey="&sidebarCmd.accesskey;" accesskey="&sidebarCmd.accesskey;"
oncommand="SidebarShowHide('sidebar-title-box');" oncommand="SidebarShowHide();"
position="2"/> position="2"/>
</menupopup> </menupopup>