mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 752729 - Open select dialog via DOM event instead of Android message. r=mbrubeck
This commit is contained in:
parent
d78bda7a72
commit
2b172303e5
@ -6,31 +6,24 @@
|
|||||||
var SelectHelper = {
|
var SelectHelper = {
|
||||||
_uiBusy: false,
|
_uiBusy: false,
|
||||||
|
|
||||||
|
handleEvent: function(aEvent) {
|
||||||
|
this.handleClick(aEvent.target);
|
||||||
|
},
|
||||||
|
|
||||||
handleClick: function(aTarget) {
|
handleClick: function(aTarget) {
|
||||||
// if we're busy looking at a select we want to eat any clicks that
|
// if we're busy looking at a select we want to eat any clicks that
|
||||||
// come to us, but not to process them
|
// come to us, but not to process them
|
||||||
if (this._uiBusy)
|
if (this._uiBusy || !this._isMenu(aTarget))
|
||||||
return true;
|
return;
|
||||||
|
|
||||||
let target = aTarget;
|
|
||||||
while (target) {
|
|
||||||
if (this._isMenu(target) && !target.disabled) {
|
|
||||||
this._uiBusy = true;
|
this._uiBusy = true;
|
||||||
target.focus();
|
this.show(aTarget);
|
||||||
let list = this.getListForElement(target);
|
|
||||||
this.show(list, target);
|
|
||||||
target = null;
|
|
||||||
this._uiBusy = false;
|
this._uiBusy = false;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (target)
|
|
||||||
target = target.parentNode;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function(aList, aElement) {
|
show: function(aElement) {
|
||||||
let data = JSON.parse(sendMessageToJava({ gecko: aList }));
|
let list = this.getListForElement(aElement);
|
||||||
|
let data = JSON.parse(sendMessageToJava({ gecko: list }));
|
||||||
let selected = data.button;
|
let selected = data.button;
|
||||||
if (selected == -1)
|
if (selected == -1)
|
||||||
return;
|
return;
|
||||||
@ -40,7 +33,7 @@ var SelectHelper = {
|
|||||||
} else if (aElement instanceof HTMLSelectElement) {
|
} else if (aElement instanceof HTMLSelectElement) {
|
||||||
if (!(selected instanceof Array)) {
|
if (!(selected instanceof Array)) {
|
||||||
let temp = [];
|
let temp = [];
|
||||||
for (let i = 0; i < aList.listitems.length; i++) {
|
for (let i = 0; i < list.listitems.length; i++) {
|
||||||
temp[i] = (i == selected);
|
temp[i] = (i == selected);
|
||||||
}
|
}
|
||||||
selected = temp;
|
selected = temp;
|
||||||
|
@ -2546,6 +2546,7 @@ var BrowserEventHandler = {
|
|||||||
|
|
||||||
BrowserApp.deck.addEventListener("DOMUpdatePageReport", PopupBlockerObserver.onUpdatePageReport, false);
|
BrowserApp.deck.addEventListener("DOMUpdatePageReport", PopupBlockerObserver.onUpdatePageReport, false);
|
||||||
BrowserApp.deck.addEventListener("touchstart", this, false);
|
BrowserApp.deck.addEventListener("touchstart", this, false);
|
||||||
|
BrowserApp.deck.addEventListener("click", SelectHelper, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEvent: function(aEvent) {
|
handleEvent: function(aEvent) {
|
||||||
@ -2642,7 +2643,7 @@ var BrowserEventHandler = {
|
|||||||
this._cancelTapHighlight();
|
this._cancelTapHighlight();
|
||||||
} else if (aTopic == "Gesture:SingleTap") {
|
} else if (aTopic == "Gesture:SingleTap") {
|
||||||
let element = this._highlightElement;
|
let element = this._highlightElement;
|
||||||
if (element && !SelectHelper.handleClick(element)) {
|
if (element) {
|
||||||
try {
|
try {
|
||||||
let data = JSON.parse(aData);
|
let data = JSON.parse(aData);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user