зеркало из https://github.com/mozilla/pjs.git
Fix sidebar popopen on search (51694). Move all the logic into sidebarOverlay.js. r=pavlov
This commit is contained in:
Родитель
b0f721e9bf
Коммит
e52dd093cd
|
@ -846,28 +846,14 @@ function setBrowserSearchMode(searchMode)
|
|||
|
||||
function RevealSearchPanel()
|
||||
{
|
||||
// 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
|
||||
var should_popopen = true;
|
||||
var should_unhide = true;
|
||||
var searchPanel = document.getElementById("urn:sidebar:panel:search");
|
||||
|
||||
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() 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);
|
||||
}
|
||||
if (searchPanel) {
|
||||
// SidebarSelectPanel() lives in sidebarOverlay.js
|
||||
SidebarSelectPanel(searchPanel, should_popopen, should_unhide);
|
||||
}
|
||||
}
|
||||
|
||||
function BrowserNewWindow()
|
||||
|
|
|
@ -216,8 +216,7 @@ function (force_reload)
|
|||
// parameter to allow the value to be persisted in localstore.rdf.
|
||||
var selected_id = this.node.getAttribute('last-selected-panel');
|
||||
|
||||
var sidebar_box = document.getElementById('sidebar-box');
|
||||
if (sidebar_box.getAttribute('collapsed') == 'true') {
|
||||
if (sidebar_is_collapsed()) {
|
||||
sidebarObj.collapsed = true;
|
||||
} else {
|
||||
sidebarObj.collapsed = false;
|
||||
|
@ -538,7 +537,7 @@ function sidebar_overlay_init() {
|
|||
// XXX This is a hack to force re-display
|
||||
panels.setAttribute('ref', sidebarObj.resource);
|
||||
}
|
||||
if (sidebar_element.getAttribute('collapsed') == 'true') {
|
||||
if (sidebar_is_collapsed()) {
|
||||
sidebarObj.collapsed = true;
|
||||
} else {
|
||||
sidebarObj.collapsed = false;
|
||||
|
@ -701,9 +700,39 @@ function sidebar_fixup_datasource() {
|
|||
|
||||
// Change the sidebar content to the selected panel.
|
||||
// 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);
|
||||
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) {
|
||||
|
@ -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().
|
||||
function sidebar_is_hidden() {
|
||||
var sidebar_title = document.getElementById('sidebar-title-box');
|
||||
|
@ -766,9 +814,9 @@ function sidebar_is_hidden() {
|
|||
|
||||
// Show/Hide the entire sidebar.
|
||||
// Envoked by the "View / My Sidebar" menu option.
|
||||
function SidebarShowHide(title_id) {
|
||||
function SidebarShowHide() {
|
||||
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_box = document.getElementById('sidebar-panels-splitter-box');
|
||||
var sidebar_splitter = document.getElementById('sidebar-splitter');
|
||||
|
@ -880,8 +928,8 @@ function SidebarTogglePanel(panel_menuitem) {
|
|||
// Sidebar Hacks and Work-arounds
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
// SidebarExpandCollapse() - Respond to grippy click.
|
||||
function SidebarExpandCollapse() {
|
||||
// SidebarCleanUpExpandCollapse() - Respond to grippy click.
|
||||
function SidebarCleanUpExpandCollapse() {
|
||||
// XXX Mini hack. Persist isn't working too well. Force the persist,
|
||||
// but wait until the change has commited.
|
||||
setTimeout("document.persist('sidebar-box', 'collapsed');",100);
|
||||
|
|
|
@ -99,9 +99,9 @@
|
|||
predicate="http://home.netscape.com/NC-rdf#exclude" />
|
||||
</bindings>
|
||||
<action>
|
||||
<box uri="?panel" class="box-texttab texttab-sidebar" align="left"
|
||||
onclick="SidebarSelectPanel(this)" hidden="true"
|
||||
value="?title" exclude="?exclude" />
|
||||
<box uri="?panel" class="box-texttab texttab-sidebar"
|
||||
onclick="SidebarSelectPanel(this,false,false)" align="left"
|
||||
hidden="true" value="?title" exclude="?exclude" />
|
||||
<box uri="?panel" flex='1*' hidden="true" orient="vertical"
|
||||
loadstate="never loaded">
|
||||
<box flex='1' orient="vertical" class="iframe-panel loadarea">
|
||||
|
@ -138,7 +138,7 @@
|
|||
orient="vertical"
|
||||
onmouseup="SidebarFinishClick();">
|
||||
<grippy class="sidebar-splitter-grippy"
|
||||
onclick="SidebarExpandCollapse();"/>
|
||||
onclick="SidebarCleanUpExpandCollapse();"/>
|
||||
</splitter>
|
||||
|
||||
<!-- View->Sidebar toggle -->
|
||||
|
@ -146,7 +146,7 @@
|
|||
<menuitem id="sidebar-menu" type="checkbox"
|
||||
value="&sidebarCmd.label;"
|
||||
accesskey="&sidebarCmd.accesskey;"
|
||||
oncommand="SidebarShowHide('sidebar-title-box');"
|
||||
oncommand="SidebarShowHide();"
|
||||
position="2"/>
|
||||
</menupopup>
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче