From 5bb6381ad29f8f2a4c61c934cbeb8098024c7847 Mon Sep 17 00:00:00 2001 From: "benjamin%smedbergs.us" Date: Wed, 2 Aug 2006 14:08:12 +0000 Subject: [PATCH] Bug 344159 - Reset the .selectedEngine pref when it matches the default setting, so that changes in the default show up, r=gavin --- browser/components/search/nsSearchService.js | 32 +++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/browser/components/search/nsSearchService.js b/browser/components/search/nsSearchService.js index 0b1ec908c429..453a833d9d4a 100755 --- a/browser/components/search/nsSearchService.js +++ b/browser/components/search/nsSearchService.js @@ -627,22 +627,6 @@ function getLocalizedPref(aPrefName, aDefault) { return aDefault; } -/** - * Wrapper for nsIPrefBranch::setComplexValue. - * @param aPrefName - * The name of the pref to set. - * @param aValue - * The value of the pref. - */ -function setLocalizedPref(aPrefName, aValue) { - var prefB = Cc["@mozilla.org/preferences-service;1"]. - getService(Ci.nsIPrefBranch); - var pls = Cc["@mozilla.org/pref-localizedstring;1"]. - createInstance(Ci.nsIPrefLocalizedString); - pls.data = aValue; - prefB.setComplexValue(aPrefName, Ci.nsIPrefLocalizedString, pls); -} - /** * Wrapper for nsIPrefBranch::getBoolPref. * @param aPrefName @@ -2686,8 +2670,20 @@ SearchService.prototype = { Cr.NS_ERROR_UNEXPECTED); this._currentEngine = newCurrentEngine; - setLocalizedPref(BROWSER_SEARCH_PREF + "selectedEngine", - this._currentEngine.name); + + var currentEnginePref = BROWSER_SEARCH_PREF + "selectedEngine"; + + var prefB = Cc["@mozilla.org/preferences-service;1"]. + getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch); + + if (this._currentEngine == this.defaultEngine) { + if (prefB.prefHasUserValue(currentEnginePref)) + prefB.clearUserPref(currentEnginePref); + } + else { + prefB.setCharPref(currentEnginePref, this._currentEngine.name); + } + notifyAction(this._currentEngine, SEARCH_ENGINE_CURRENT); },