зеркало из https://github.com/mozilla/gecko-dev.git
Bug 572716 - Escape does not dismiss SelectHelper popup [r=mfinkle]
This commit is contained in:
Родитель
007c11b739
Коммит
7b7f49203f
|
@ -1410,11 +1410,6 @@ var FormHelper = {
|
||||||
return this._helperSpacer = document.getElementById("form-helper-spacer");
|
return this._helperSpacer = document.getElementById("form-helper-spacer");
|
||||||
},
|
},
|
||||||
|
|
||||||
get _selectContainer() {
|
|
||||||
delete this._selectContainer;
|
|
||||||
return this._selectContainer = document.getElementById("select-container");
|
|
||||||
},
|
|
||||||
|
|
||||||
get _autofillContainer() {
|
get _autofillContainer() {
|
||||||
delete this._autofillContainer;
|
delete this._autofillContainer;
|
||||||
return this._autofillContainer = document.getElementById("form-helper-autofill");
|
return this._autofillContainer = document.getElementById("form-helper-autofill");
|
||||||
|
@ -1463,11 +1458,7 @@ var FormHelper = {
|
||||||
let currentIsSelect = this._isValidSelectElement(aNewElement);
|
let currentIsSelect = this._isValidSelectElement(aNewElement);
|
||||||
|
|
||||||
if (currentIsSelect && !previousIsSelect) {
|
if (currentIsSelect && !previousIsSelect) {
|
||||||
this._selectContainer.style.maxHeight = (window.innerHeight / 1.8) + "px";
|
SelectHelper.dock(this._container);
|
||||||
|
|
||||||
let rootNode = this._container;
|
|
||||||
rootNode.insertBefore(this._selectContainer, rootNode.lastChild);
|
|
||||||
|
|
||||||
SelectHelper.show(aNewElement);
|
SelectHelper.show(aNewElement);
|
||||||
}
|
}
|
||||||
else if (currentIsSelect && previousIsSelect) {
|
else if (currentIsSelect && previousIsSelect) {
|
||||||
|
@ -1475,10 +1466,7 @@ var FormHelper = {
|
||||||
SelectHelper.show(aNewElement);
|
SelectHelper.show(aNewElement);
|
||||||
}
|
}
|
||||||
else if (!currentIsSelect && previousIsSelect) {
|
else if (!currentIsSelect && previousIsSelect) {
|
||||||
let rootNode = this._container.parentNode;
|
SelectHelper.hide();
|
||||||
rootNode.insertBefore(this._selectContainer, rootNode.lastChild);
|
|
||||||
|
|
||||||
SelectHelper.close();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1981,10 +1969,15 @@ MenulistWrapper.prototype = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var SelectHelper = {
|
var SelectHelper = {
|
||||||
_panel: null,
|
|
||||||
_list: null,
|
_list: null,
|
||||||
_control: null,
|
_control: null,
|
||||||
_selectedIndexes: [],
|
_selectedIndexes: [],
|
||||||
|
_docked: false,
|
||||||
|
|
||||||
|
get _panel() {
|
||||||
|
delete this._panel;
|
||||||
|
return this._panel = document.getElementById("select-container");
|
||||||
|
},
|
||||||
|
|
||||||
_getSelectedIndexes: function() {
|
_getSelectedIndexes: function() {
|
||||||
let indexes = [];
|
let indexes = [];
|
||||||
|
@ -2056,14 +2049,29 @@ var SelectHelper = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this._panel = document.getElementById("select-container");
|
|
||||||
this._panel.hidden = false;
|
this._panel.hidden = false;
|
||||||
|
|
||||||
|
if (!this._docked)
|
||||||
|
BrowserUI.pushPopup(this, this._panel);
|
||||||
|
|
||||||
this._scrollElementIntoView(firstSelected);
|
this._scrollElementIntoView(firstSelected);
|
||||||
|
|
||||||
this._list.addEventListener("click", this, false);
|
this._list.addEventListener("click", this, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
dock: function dock(aContainer) {
|
||||||
|
aContainer.insertBefore(this._panel, aContainer.lastChild);
|
||||||
|
this._panel.style.maxHeight = (window.innerHeight / 1.8) + "px";
|
||||||
|
this._docked = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
undock: function undock() {
|
||||||
|
let rootNode = Elements.stack;
|
||||||
|
rootNode.insertBefore(this._panel, rootNode.lastChild);
|
||||||
|
this._panel.style.maxHeight = "";
|
||||||
|
this._docked = false;
|
||||||
|
},
|
||||||
|
|
||||||
_scrollElementIntoView: function(aElement) {
|
_scrollElementIntoView: function(aElement) {
|
||||||
if (!aElement)
|
if (!aElement)
|
||||||
return;
|
return;
|
||||||
|
@ -2132,10 +2140,15 @@ var SelectHelper = {
|
||||||
this._list = empty;
|
this._list = empty;
|
||||||
},
|
},
|
||||||
|
|
||||||
close: function() {
|
hide: function() {
|
||||||
this._list.removeEventListener("click", this, false);
|
this._list.removeEventListener("click", this, false);
|
||||||
this._panel.hidden = true;
|
this._panel.hidden = true;
|
||||||
|
|
||||||
|
if (this._docked)
|
||||||
|
this.undock();
|
||||||
|
else
|
||||||
|
BrowserUI.popPopup();
|
||||||
|
|
||||||
this.reset();
|
this.reset();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -480,7 +480,7 @@
|
||||||
<vbox id="select-container-inner" class="dialog-dark" flex="1">
|
<vbox id="select-container-inner" class="dialog-dark" flex="1">
|
||||||
<scrollbox id="select-list" flex="1" orient="vertical"/>
|
<scrollbox id="select-list" flex="1" orient="vertical"/>
|
||||||
<hbox id="select-buttons" pack="center">
|
<hbox id="select-buttons" pack="center">
|
||||||
<button id="select-buttons-done" class="button-dark" label="&formHelper.done;" oncommand="SelectHelper.close();"/>
|
<button id="select-buttons-done" class="button-dark" label="&formHelper.done;" oncommand="SelectHelper.hide();"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
<spacer flex="1000"/>
|
<spacer flex="1000"/>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче