Bug 1353699 <menulist> for default font should use onsyncfrompreference r?jaws
When font.name.*.* is set to false, "value" attribute of <preference> is removed. Then, <preference>.setElementValue() with an element which doesn't have onsyncfrompreference tries to set null. Then, <menulist> selects nothing.
In such case, <menulist> should select the item whose value is "". If there is onsyncfrompreference attribute and it returns empty string, <preference>.setElementValue() works as expected.
MozReview-Commit-ID: 54KIe3JxwyA
--- a/browser/components/preferences/in-content-old/content.js
+++ b/browser/components/preferences/in-content-old/content.js
@@ -22,20 +22,16 @@ var gContentPane = {
init() {
function setEventListener(aId, aEventType, aCallback) {
document.getElementById(aId)
.addEventListener(aEventType, aCallback.bind(gContentPane));
}
// Initializes the fonts dropdowns displayed in this pane.
this._rebuildFonts();
- var menulist = document.getElementById("defaultFont");
- if (menulist.selectedIndex == -1) {
- menulist.value = FontBuilder.readFontSelection(menulist);
- }
// Show translation preferences if we may:
const prefName = "browser.translation.ui.show";
if (Services.prefs.getBoolPref(prefName)) {
let row = document.getElementById("translationBox");
row.removeAttribute("hidden");
// Showing attribution only for Bing Translator.
Components.utils.import("resource:///modules/translation/Translation.jsm");
--- a/browser/components/preferences/in-content-old/content.xul
+++ b/browser/components/preferences/in-content-old/content.xul
@@ -124,17 +124,17 @@
<columns>
<column flex="1"/>
<column/>
</columns>
<rows id="fontsRows">
<row id="fontRow">
<hbox align="center">
<label control="defaultFont" accesskey="&defaultFont.accesskey;">&defaultFont.label;</label>
- <menulist id="defaultFont" delayprefsave="true"/>
+ <menulist id="defaultFont" delayprefsave="true" onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
<label id="defaultFontSizeLabel" control="defaultFontSize" accesskey="&defaultSize.accesskey;">&defaultSize.label;</label>
<menulist id="defaultFontSize" delayprefsave="true">
<menupopup>
<menuitem value="9" label="9"/>
<menuitem value="10" label="10"/>
<menuitem value="11" label="11"/>
<menuitem value="12" label="12"/>
<menuitem value="13" label="13"/>
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -139,20 +139,16 @@ var gMainPane = {
gMainPane._rebuildFonts);
setEventListener("advancedFonts", "command",
gMainPane.configureFonts);
setEventListener("colors", "command",
gMainPane.configureColors);
// Initializes the fonts dropdowns displayed in this pane.
this._rebuildFonts();
- var menulist = document.getElementById("defaultFont");
- if (menulist.selectedIndex == -1) {
- menulist.value = FontBuilder.readFontSelection(menulist);
- }
// Show translation preferences if we may:
const prefName = "browser.translation.ui.show";
if (Services.prefs.getBoolPref(prefName)) {
let row = document.getElementById("translationBox");
row.removeAttribute("hidden");
// Showing attribution only for Bing Translator.
Components.utils.import("resource:///modules/translation/Translation.jsm");
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -466,17 +466,17 @@
<columns>
<column flex="1"/>
<column/>
</columns>
<rows id="fontsRows">
<row id="fontRow">
<hbox align="center">
<label control="defaultFont" accesskey="&defaultFont.accesskey;">&defaultFont.label;</label>
- <menulist id="defaultFont" delayprefsave="true"/>
+ <menulist id="defaultFont" delayprefsave="true" onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
<label id="defaultFontSizeLabel" control="defaultFontSize" accesskey="&defaultSize.accesskey;">&defaultSize.label;</label>
<menulist id="defaultFontSize" delayprefsave="true">
<menupopup>
<menuitem value="9" label="9"/>
<menuitem value="10" label="10"/>
<menuitem value="11" label="11"/>
<menuitem value="12" label="12"/>
<menuitem value="13" label="13"/>