Bug 1294366 - fix filter widget select opening only once, force focus on window on click;r=ochameau

MozReview-Commit-ID: 5xcZuoRxOco

--HG--
extra : rebase_source : e755310f51db2bde134a8cb6aebcb06fdd7a16f4
This commit is contained in:
Julian Descottes 2016-08-22 17:55:12 +02:00
parent cb6fdc2f74
commit d9eda2f4cb

View File

@ -131,6 +131,7 @@ function CSSFilterEditorWidget(el, value = "") {
this._presetClick = this._presetClick.bind(this);
this._savePreset = this._savePreset.bind(this);
this._togglePresets = this._togglePresets.bind(this);
this._resetFocus = this._resetFocus.bind(this);
// Passed to asyncStorage, requires binding
this.renderPresets = this.renderPresets.bind(this);
@ -279,6 +280,7 @@ CSSFilterEditorWidget.prototype = {
this.filtersList.addEventListener("click", this._removeButtonClick);
this.filtersList.addEventListener("mousedown", this._mouseDown);
this.filtersList.addEventListener("keydown", this._keyDown);
this.el.addEventListener("mousedown", this._resetFocus);
this.presetsList.addEventListener("click", this._presetClick);
this.togglePresets.addEventListener("click", this._togglePresets);
@ -298,6 +300,7 @@ CSSFilterEditorWidget.prototype = {
this.filtersList.removeEventListener("click", this._removeButtonClick);
this.filtersList.removeEventListener("mousedown", this._mouseDown);
this.filtersList.removeEventListener("keydown", this._keyDown);
this.el.removeEventListener("mousedown", this._resetFocus);
this.presetsList.removeEventListener("click", this._presetClick);
this.togglePresets.removeEventListener("click", this._togglePresets);
@ -608,6 +611,14 @@ CSSFilterEditorWidget.prototype = {
}, ex => console.error(ex));
},
/**
* Workaround needed to reset the focus when using a HTML select inside a XUL panel.
* See Bug 1294366.
*/
_resetFocus: function () {
this.filterSelect.ownerDocument.defaultView.focus();
},
/**
* Clears the list and renders filters, binding required events.
* There are some delegated events bound in _addEventListeners method