summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-04-15 22:31:31 +0200
committerjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-04-15 22:31:31 +0200
commitb7115f464e01e3483160cb50fef02c10c8458029 (patch)
tree0158f4c8e2482ab9dbd087743534146b2f1787db
parent0f8df53ae7d831410407c182d489927cce5c3597 (diff)
downloaduxp-b7115f464e01e3483160cb50fef02c10c8458029.tar.gz
palemoon#975: Customizable toolbars - backward compatible (but unidirectional)
-rw-r--r--toolkit/content/customizeToolbar.js4
-rw-r--r--toolkit/content/widgets/toolbar.xml48
2 files changed, 41 insertions, 11 deletions
diff --git a/toolkit/content/customizeToolbar.js b/toolkit/content/customizeToolbar.js
index d5288776ba..7400aaadc6 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 e79843dbda..c371be317b 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);
}
}
]]>