diff --git a/common/content/buffer.js b/common/content/buffer.js index a3fc1f81..a1f6fe94 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -1306,10 +1306,19 @@ var Buffer = Module("buffer", { dactyl.assert(!arg || arg[0] == ">" && !util.OS.isWindows, _("error.trailingCharacters")); + const PRINTER = "PostScript/default"; + const BRANCH = "print.printer_" + PRINTER + "."; + prefs.withContext(function () { if (arg) { - prefs.set("print.print_to_file", "true"); - prefs.set("print.print_to_filename", io.File(arg.substr(1)).path); + prefs.set("print.print_printer", PRINTER); + + prefs.set( "print.print_to_file", true); + prefs.set(BRANCH + "print_to_file", true); + + prefs.set( "print.print_to_filename", io.File(arg.substr(1)).path); + prefs.set(BRANCH + "print_to_filename", io.File(arg.substr(1)).path); + dactyl.echomsg(_("print.toFile", arg.substr(1))); } else diff --git a/common/modules/prefs.jsm b/common/modules/prefs.jsm index 803f42c3..b546ce53 100644 --- a/common/modules/prefs.jsm +++ b/common/modules/prefs.jsm @@ -210,11 +210,8 @@ var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) * @param {value} value The new preference value. */ set: function (name, value) { - if (this._prefContexts.length) { - let val = this.get(name, null); - if (val != null) - this._prefContexts[this._prefContexts.length - 1][name] = val; - } + if (this._prefContexts.length) + this._prefContexts[this._prefContexts.length - 1][name] = this.get(name, null); function assertType(needType) util.assert(type === Ci.nsIPrefBranch.PREF_INVALID || type === needType, @@ -240,7 +237,10 @@ var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) this.branch.setBoolPref(name, value); break; default: - throw FailedAssertion("Unknown preference type: " + typeof value + " (" + name + "=" + value + ")"); + if (value == null && this != this.defaults) + this.reset(name); + else + throw FailedAssertion("Unknown preference type: " + typeof value + " (" + name + "=" + value + ")"); } },