зеркало из 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()
|
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>
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче