diff options
Diffstat (limited to 'toolkit')
-rw-r--r-- | toolkit/content/customizeToolbar.js | 4 | ||||
-rw-r--r-- | toolkit/content/widgets/toolbar.xml | 48 |
2 files changed, 41 insertions, 11 deletions
diff --git a/toolkit/content/customizeToolbar.js b/toolkit/content/customizeToolbar.js index d5288776b..7400aaadc 100644 --- a/toolkit/content/customizeToolbar.js +++ b/toolkit/content/customizeToolbar.js @@ -180,8 +180,8 @@ function persistCurrentSets() // Persist custom toolbar info on the <toolbarset/> // Attributes: // Names: "toolbarX" (X - the number of the toolbar) - // Values: "Name:HidingAttributeName-HidingAttributeValue:CurrentSet" - gToolbox.toolbarset.setAttribute("toolbar"+(++customCount), + // Values: "Name|HidingAttributeName-HidingAttributeValue|CurrentSet" + gToolbox.toolbarset.setAttribute("toolbar" + (++customCount), toolbar.toolbarName + gToolbarInfoSeparators[0] + hidingAttribute diff --git a/toolkit/content/widgets/toolbar.xml b/toolkit/content/widgets/toolbar.xml index e79843dbd..c371be317 100644 --- a/toolkit/content/widgets/toolbar.xml +++ b/toolkit/content/widgets/toolbar.xml @@ -30,7 +30,7 @@ </field> <field name="externalToolbars"> - [] + [] </field> <!-- Set by customizeToolbar.js --> @@ -50,22 +50,52 @@ <constructor> <![CDATA[ this.toolbarInfoSeparators = ["|", "-"]; + this.toolbarInfoLegacySeparator = ":"; // Look to see if there is a toolbarset. this.toolbarset = this.firstChild; - while (this.toolbarset && this.toolbarset.localName != "toolbarset") + while (this.toolbarset && this.toolbarset.localName != "toolbarset") { this.toolbarset = toolbarset.nextSibling; + } if (this.toolbarset) { // Create each toolbar described by the toolbarset. var index = 0; while (this.toolbarset.hasAttribute("toolbar" + (++index))) { - var toolbarInfo = this.toolbarset.getAttribute("toolbar"+index); - var infoSplit = toolbarInfo.split(this.toolbarInfoSeparators[0]); - var infoName = infoSplit[0]; - var infoHidingAttribute = infoSplit[1].split(this.toolbarInfoSeparators[1]); - var infoCurrentSet = infoSplit[2]; - - this.appendCustomToolbar(infoName, infoCurrentSet, infoHidingAttribute); + let hiddingAttribute = + this.toolbarset.getAttribute("type") == "menubar" + ? "autohide" : "collapsed"; + let toolbarInfo = this.toolbarset.getAttribute("toolbar" + index); + let infoSplit = toolbarInfo.split(this.toolbarInfoSeparators[0]); + if (infoSplit.length == 1) { + infoSplit = toolbarInfo.split(this.toolbarInfoLegacySeparator); + } + let infoName = infoSplit[0]; + let infoHidingAttribute = [null, null]; + let infoCurrentSet = ""; + let infoSplitLen = infoSplit.length; + switch (infoSplitLen) { + case 3: + // Pale Moon 27.2+ + infoHidingAttribute = infoSplit[1] + .split(this.toolbarInfoSeparators[1]); + infoCurrentSet = infoSplit[2]; + break; + case 2: + // Legacy: + // - toolbars from Pale Moon 27.0 - 27.1.x + // - Basilisk + // The previous value (hiddingAttribute) isn't stored. + infoHidingAttribute = [hiddingAttribute, "false"]; + infoCurrentSet = infoSplit[1]; + break; + default: + Components.utils.reportError( + "Customizable toolbars - an invalid value:" + "\n" + + '"toolbar' + index + '" = "' + toolbarInfo + '"'); + break; + } + this.appendCustomToolbar( + infoName, infoCurrentSet, infoHidingAttribute); } } ]]> |