diff --git a/application/palemoon/components/preferences/newtaburl.js b/application/palemoon/components/preferences/newtaburl.js index ac0eec1c5..3c82df846 100644 --- a/application/palemoon/components/preferences/newtaburl.js +++ b/application/palemoon/components/preferences/newtaburl.js @@ -22,7 +22,11 @@ var gNewtabUrl = { return; } } else { - newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice"); + if (this.newtabUrlChoiceIsSet) { + newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice"); + } else { + newtabUrlChoice = this.getNewtabChoice(); + } } if (browserHomepageUrl || browserHomepageUrl == "") { if (Services.prefs.getBoolPref("browser.preferences.instantApply")) { @@ -64,5 +68,35 @@ var gNewtabUrl = { } Services.prefs.setCharPref("browser.newtab.url",newtabUrlPref); } catch(e) { console.error(e); } + }, + + /** + * Determines the value of browser.newtab.choice based + * on the value of browser.newtab.url + * + * @returns the value of browser.newtab.choice + */ + getNewtabChoice: function() { + let newtabUrlPref = Services.prefs.getCharPref("browser.newtab.url"); + let browserHomepageUrl = Services.prefs.getComplexValue("browser.startup.homepage", + Components.interfaces.nsIPrefLocalizedString).data; + let newtabUrlSanitizedPref = browserHomepageUrl.split("|")[0]; + let defaultStartupHomepage = Services.prefs.getDefaultBranch("browser.") + .getComplexValue("startup.homepage", + Components.interfaces.nsIPrefLocalizedString).data; + switch (newtabUrlPref) { + case "about:logopage": + return 1; + case defaultStartupHomepage: + return 2; + case newtabUrlSanitizedPref: + return 3; + case "about:newtab": + return 4; + default: // Custom URL entered. + // We need this to consider instantApply. + this.newtabPageCustom = newtabUrlPref; + return 0; + } } }; diff --git a/application/palemoon/components/preferences/tabs.js b/application/palemoon/components/preferences/tabs.js index 17084a770..b09cb60df 100644 --- a/application/palemoon/components/preferences/tabs.js +++ b/application/palemoon/components/preferences/tabs.js @@ -78,34 +78,13 @@ var gTabsPane = { /** * Determines the value of the New Tab display drop-down based * on the value of browser.newtab.url. - * - * @returns the appropriate value of browser.newtab.choice */ readNewtabUrl: function() { - let newtabUrlPref = document.getElementById("browser.newtab.url"); - let newtabUrlSanitizedPref = document.getElementById("browser.newtab.myhome"); let newtabUrlChoice = document.getElementById("browser.newtab.choice"); - let defaultStartupHomepage = Services.prefs.getDefaultBranch("browser.") - .getComplexValue("startup.homepage", - Components.interfaces.nsIPrefLocalizedString).data; - switch (newtabUrlPref.value) { - case "about:logopage": - newtabUrlChoice.value = 1; - break; - case defaultStartupHomepage: - newtabUrlChoice.value = 2; - break; - case newtabUrlSanitizedPref.value: - newtabUrlChoice.value = 3; - break; - case "about:newtab": - newtabUrlChoice.value = 4; - break; - default: // Custom URL entered. - document.getElementById("newtabPageCustom").hidden = false; - newtabUrlChoice.value = 0; - // We need this to consider instantApply. - this.newtabPageCustom = newtabUrlPref.value; + newtabUrlChoice.value = gNewtabUrl.getNewtabChoice(); + if (newtabUrlChoice.value == 0) { + document.getElementById("newtabPageCustom").hidden = false; } + gNewtabUrl.newtabUrlChoiceIsSet = true; } };