Bug 752729 - Open select dialog via DOM event instead of Android message. r=mbrubeck

This commit is contained in:
Eitan Isaacson 2012-05-07 16:52:20 -07:00
parent d78bda7a72
commit 2b172303e5
2 changed files with 15 additions and 21 deletions

View File

@ -6,31 +6,24 @@
var SelectHelper = {
_uiBusy: false,
handleEvent: function(aEvent) {
this.handleClick(aEvent.target);
},
handleClick: function(aTarget) {
// if we're busy looking at a select we want to eat any clicks that
// come to us, but not to process them
if (this._uiBusy)
return true;
if (this._uiBusy || !this._isMenu(aTarget))
return;
let target = aTarget;
while (target) {
if (this._isMenu(target) && !target.disabled) {
this._uiBusy = true;
target.focus();
let list = this.getListForElement(target);
this.show(list, target);
target = null;
this._uiBusy = false;
return true;
}
if (target)
target = target.parentNode;
}
return false;
this._uiBusy = true;
this.show(aTarget);
this._uiBusy = false;
},
show: function(aList, aElement) {
let data = JSON.parse(sendMessageToJava({ gecko: aList }));
show: function(aElement) {
let list = this.getListForElement(aElement);
let data = JSON.parse(sendMessageToJava({ gecko: list }));
let selected = data.button;
if (selected == -1)
return;
@ -40,7 +33,7 @@ var SelectHelper = {
} else if (aElement instanceof HTMLSelectElement) {
if (!(selected instanceof Array)) {
let temp = [];
for (let i = 0; i < aList.listitems.length; i++) {
for (let i = 0; i < list.listitems.length; i++) {
temp[i] = (i == selected);
}
selected = temp;

View File

@ -2546,6 +2546,7 @@ var BrowserEventHandler = {
BrowserApp.deck.addEventListener("DOMUpdatePageReport", PopupBlockerObserver.onUpdatePageReport, false);
BrowserApp.deck.addEventListener("touchstart", this, false);
BrowserApp.deck.addEventListener("click", SelectHelper, true);
},
handleEvent: function(aEvent) {
@ -2642,7 +2643,7 @@ var BrowserEventHandler = {
this._cancelTapHighlight();
} else if (aTopic == "Gesture:SingleTap") {
let element = this._highlightElement;
if (element && !SelectHelper.handleClick(element)) {
if (element) {
try {
let data = JSON.parse(aData);