mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-24 11:27:49 +00:00
Bug 669390 - Part 1: Allow setting a preference value from the menulist inline preferences. r=Unfocused
This commit is contained in:
parent
0483cd3cc8
commit
c4979264d4
@ -133,9 +133,10 @@ setting[type="directory"] {
|
||||
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-path");
|
||||
}
|
||||
|
||||
setting[type="radio"] {
|
||||
setting[type="radio"],
|
||||
setting[type="menulist"] {
|
||||
display: -moz-grid-line;
|
||||
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-radio");
|
||||
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-multi");
|
||||
}
|
||||
|
||||
#addonitem-popup > menuitem[disabled="true"] {
|
||||
|
@ -473,7 +473,7 @@
|
||||
</implementation>
|
||||
</binding>
|
||||
|
||||
<binding id="setting-radio" extends="chrome://mozapps/content/extensions/setting.xml#setting-base">
|
||||
<binding id="setting-multi" extends="chrome://mozapps/content/extensions/setting.xml#setting-base">
|
||||
<content>
|
||||
<xul:vbox class="setting-label">
|
||||
<xul:label class="preferences-title" xbl:inherits="value=title" crop="end" flex="1"/>
|
||||
@ -482,7 +482,7 @@
|
||||
</xul:label>
|
||||
</xul:vbox>
|
||||
<xul:hbox class="setting-input">
|
||||
<children include="radiogroup" />
|
||||
<children include="radiogroup,menulist" />
|
||||
</xul:hbox>
|
||||
</content>
|
||||
|
||||
@ -490,7 +490,7 @@
|
||||
<constructor>
|
||||
<![CDATA[
|
||||
let self = this;
|
||||
this.radioGroup.addEventListener("command", function() {
|
||||
this.control.addEventListener("command", function() {
|
||||
self.valueToPreference();
|
||||
}, false);
|
||||
]]>
|
||||
@ -514,9 +514,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
for (let i = 0; i < this.radioGroup.itemCount; i++) {
|
||||
if (this.radioGroup.getItemAtIndex(i).value == val) {
|
||||
this.radioGroup.selectedIndex = i;
|
||||
for (let i = 0; i < this.control.itemCount; i++) {
|
||||
if (this.control.getItemAtIndex(i).value == val) {
|
||||
this.control.selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -528,7 +528,7 @@
|
||||
<body>
|
||||
<![CDATA[
|
||||
// We might not have a pref already set, so we guess the type from the value attribute
|
||||
let val = this.radioGroup.selectedItem.value;
|
||||
let val = this.control.selectedItem.value;
|
||||
if (val == "true" || val == "false")
|
||||
Services.prefs.setBoolPref(this.pref, val == "true");
|
||||
else if (/^-?\d+$/.test(val))
|
||||
@ -539,7 +539,7 @@
|
||||
</body>
|
||||
</method>
|
||||
|
||||
<field name="radioGroup">this.getElementsByTagName("radiogroup")[0];</field>
|
||||
<field name="control">this.getElementsByTagName(this.getAttribute("type") == "radio" ? "radiogroup" : "menulist")[0];</field>
|
||||
</implementation>
|
||||
</binding>
|
||||
</bindings>
|
||||
|
@ -80,6 +80,7 @@ function end_test() {
|
||||
Services.prefs.clearUserPref("extensions.inlinesettings3.radioBool");
|
||||
Services.prefs.clearUserPref("extensions.inlinesettings3.radioInt");
|
||||
Services.prefs.clearUserPref("extensions.inlinesettings3.radioString");
|
||||
Services.prefs.clearUserPref("extensions.inlinesettings3.menulist");
|
||||
|
||||
close_manager(gManagerWindow, function() {
|
||||
AddonManager.getAddonByID("inlinesettings1@tests.mozilla.org", function(aAddon) {
|
||||
@ -278,7 +279,7 @@ add_test(function() {
|
||||
|
||||
var grid = gManagerWindow.document.getElementById("detail-grid");
|
||||
var settings = grid.querySelectorAll("rows > setting");
|
||||
is(settings.length, 3, "Grid should have settings children");
|
||||
is(settings.length, 4, "Grid should have settings children");
|
||||
|
||||
// Force bindings to apply
|
||||
settings[0].clientTop;
|
||||
@ -315,6 +316,15 @@ add_test(function() {
|
||||
EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow);
|
||||
is(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "kilo", "Radio pref should have been updated");
|
||||
|
||||
ok(!settings[3].hasAttribute("first-row"), "Not the first row");
|
||||
Services.prefs.setIntPref("extensions.inlinesettings3.menulist", 8);
|
||||
var input = settings[3].firstElementChild;
|
||||
is(input.value, "8", "Menulist should have initial value");
|
||||
input.focus();
|
||||
EventUtils.synthesizeKey("n", {}, gManagerWindow);
|
||||
is(input.value, "9", "Menulist should have updated value");
|
||||
is(Services.prefs.getIntPref("extensions.inlinesettings3.menulist"), 9, "Menulist pref should have been updated");
|
||||
|
||||
button = gManagerWindow.document.getElementById("detail-prefs-btn");
|
||||
is_element_hidden(button, "Preferences button should not be visible");
|
||||
|
||||
|
@ -20,4 +20,13 @@
|
||||
<radio label="Kilo" value="kilo" />
|
||||
</radiogroup>
|
||||
</setting>
|
||||
<setting pref="extensions.inlinesettings3.menulist" type="menulist" title="Menulist">
|
||||
<menulist sizetopopup="always">
|
||||
<menupopup>
|
||||
<menuitem label="Lima" value="7" />
|
||||
<menuitem label="Mike" value="8" />
|
||||
<menuitem label="November" value="9" />
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</setting>
|
||||
</vbox>
|
||||
|
@ -1085,6 +1085,7 @@ setting[type="string"] > .setting-input > textbox {
|
||||
.addon-control,
|
||||
setting:not([type="integer"]) button,
|
||||
setting[type="control"] menulist,
|
||||
setting[type="menulist"] menulist,
|
||||
setting[type="color"] colorpicker[type="button"] {
|
||||
-moz-appearance: none;
|
||||
padding: 1px 4px;
|
||||
@ -1115,6 +1116,7 @@ setting[type="color"] colorpicker[type="button"] {
|
||||
.addon-control:active:hover,
|
||||
setting:not([type="integer"]) button:active:hover,
|
||||
setting[type="control"] menulist:active:hover,
|
||||
setting[type="menulist"] menulist:active:hover,
|
||||
setting[type="color"] colorpicker[type="button"]:active:hover {
|
||||
box-shadow: inset 0 1px 3px rgba(0,0,0,.2), 0 1px rgba(255,255,255,0.25);
|
||||
background-image: -moz-linear-gradient(rgba(45,54,71,0.3), rgba(45,54,71,0.1));
|
||||
|
@ -1086,6 +1086,7 @@ menulist { /* Fixes some styling inconsistencies */
|
||||
.addon-control,
|
||||
setting:not([type="integer"]) button,
|
||||
setting[type="control"] menulist,
|
||||
setting[type="menulist"] menulist,
|
||||
setting[type="color"] colorpicker[type="button"] {
|
||||
-moz-appearance: none;
|
||||
color: black;
|
||||
@ -1109,6 +1110,7 @@ setting[type="color"] colorpicker[type="button"] {
|
||||
.addon-control:active:hover,
|
||||
setting:not([type="integer"]) button:active:hover,
|
||||
setting[type="control"] menulist:active:hover,
|
||||
setting[type="menulist"] menulist:active:hover,
|
||||
setting[type="color"] colorpicker[type="button"]:active:hover {
|
||||
background-color: rgba(61, 76, 92, 0.2);
|
||||
border-color: rgba(39, 53, 68, 0.5);
|
||||
|
Loading…
x
Reference in New Issue
Block a user