diff --git a/suite/common/sidebar/sidebarOverlay.js b/suite/common/sidebar/sidebarOverlay.js index ce8a8f8271e7..a770fc104aaa 100644 --- a/suite/common/sidebar/sidebarOverlay.js +++ b/suite/common/sidebar/sidebarOverlay.js @@ -704,9 +704,15 @@ function refresh_all_sidebars() { // Sidebar Init ////////////////////////////////////////////////////////////// function sidebar_overlay_init() { + + // do we have a sidebar? + if (!document.getElementById("sidebar-panels-splitter-box")) + return; + if (sidebar_is_collapsed() && !gAboutToUncollapse) return; gMustInit = false; + sidebarObj.panels = new sbPanelList('sidebar-panels'); sidebarObj.datasource_uri = get_sidebar_datasource_uri(); sidebarObj.resource = 'urn:sidebar:current-panel-list'; @@ -733,6 +739,9 @@ function sidebar_overlay_init() { if (sidebarObj.never_built) { sidebarObj.never_built = false; + // set personal toolbar sidebar icon to correct state + SidebarToggleIcon(); + debug("sidebar = " + sidebarObj); debug("sidebarObj.resource = " + sidebarObj.resource); debug("sidebarObj.datasource_uri = " + sidebarObj.datasource_uri); @@ -780,9 +789,14 @@ function sidebar_overlay_init() { } function sidebar_overlay_destruct() { - var panels = document.getElementById('sidebar-panels'); - debug("Removing observer from database."); - panels.database.RemoveObserver(panel_observer); + + // do we have a sidebar? + if (!document.getElementById("sidebar-panels-splitter-box")) + return; + + var panels = document.getElementById('sidebar-panels'); + debug("Removing observer from database."); + panels.database.RemoveObserver(panel_observer); } function sidebar_open_default_panel(wait, tries) { @@ -1091,6 +1105,7 @@ function sidebar_is_collapsed() { } function SidebarExpandCollapse() { + SidebarToggleIcon(); var sidebar_splitter = document.getElementById('sidebar-splitter'); var sidebar_box = document.getElementById('sidebar-box'); if (sidebar_splitter.getAttribute('state') == 'collapsed') { @@ -1117,6 +1132,7 @@ function sidebar_is_hidden() { // Show/Hide the entire sidebar. // Invoked by the "View / Sidebar" menu option. function SidebarShowHide() { + SidebarToggleIcon(); var sidebar_box = document.getElementById('sidebar-box'); var title_box = document.getElementById('sidebar-title-box'); var sidebar_panels_splitter = document.getElementById('sidebar-panels-splitter'); @@ -1299,6 +1315,27 @@ function SidebarTogglePanel(panel_menuitem) { sidebarObj.datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush(); } +function SidebarToggleIcon() +{ + var sidebarButton = document.getElementById("sidebar-button"); + if (sidebarButton) + { + var newValue = false; + if (sidebarButton.getAttribute("sbopen") == "false") + newValue = true; + + sidebarButton.setAttribute("sbopen", newValue); + + var tooltipText; + if (newValue) // it's open so show action ``<== Close Sidebar'' + tooltipText = sidebarButton.getAttribute("sbclosetooltip"); + else // it's closed so show action ``==> Open Sidebar'' + tooltipText = sidebarButton.getAttribute("sbopentooltip"); + + sidebarButton.setAttribute("tooltiptext", tooltipText); + } +} + function SidebarNavigate(aDirection) { debug("SidebarNavigate " + aDirection); diff --git a/suite/common/sidebar/sidebarOverlay.xul b/suite/common/sidebar/sidebarOverlay.xul index 3bb805ad90b9..f9bc1fa30699 100644 --- a/suite/common/sidebar/sidebarOverlay.xul +++ b/suite/common/sidebar/sidebarOverlay.xul @@ -21,7 +21,7 @@ - + @@ -54,6 +54,42 @@ oncommand="SidebarCustomize();"/> + + + + + + + + + + + + + +