mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
Bug 719276 - Use touchstart to determine when to start showing tap highlight. r=mbrubeck
This commit is contained in:
parent
5a15c486c6
commit
ff218c5149
@ -2218,7 +2218,7 @@ Tab.prototype = {
|
||||
var BrowserEventHandler = {
|
||||
init: function init() {
|
||||
Services.obs.addObserver(this, "Gesture:SingleTap", false);
|
||||
Services.obs.addObserver(this, "Gesture:ShowPress", false);
|
||||
document.addEventListener("touchstart", this, false);
|
||||
Services.obs.addObserver(this, "Gesture:CancelTouch", false);
|
||||
Services.obs.addObserver(this, "Gesture:DoubleTap", false);
|
||||
Services.obs.addObserver(this, "Gesture:Scroll", false);
|
||||
@ -2227,6 +2227,34 @@ var BrowserEventHandler = {
|
||||
BrowserApp.deck.addEventListener("DOMUpdatePageReport", PopupBlockerObserver.onUpdatePageReport, false);
|
||||
},
|
||||
|
||||
handleEvent: function(aEvent) {
|
||||
switch(aEvent.type) {
|
||||
case "touchstart":
|
||||
if (aEvent.touches.length == 1) {
|
||||
let closest = ElementTouchHelper.elementFromPoint(BrowserApp.selectedBrowser.contentWindow,
|
||||
aEvent.touches[0].screenX, aEvent.touches[0].screenY);
|
||||
if (!closest) {
|
||||
closest = ElementTouchHelper.anyElementFromPoint(BrowserApp.selectedBrowser.contentWindow,
|
||||
aEvent.touches[0].screenX, aEvent.touches[0].screenY);
|
||||
}
|
||||
if (closest) {
|
||||
this._doTapHighlight(closest);
|
||||
|
||||
// If we've pressed a scrollable element, let Java know that we may
|
||||
// want to override the scroll behaviour (for document sub-frames)
|
||||
this._scrollableElement = this._findScrollableElement(closest, true);
|
||||
this._firstScrollEvent = true;
|
||||
|
||||
if (this._scrollableElement != null) {
|
||||
// Discard if it's the top-level scrollable, we let Java handle this
|
||||
let doc = BrowserApp.selectedBrowser.contentDocument;
|
||||
if (this._scrollableElement != doc.body && this._scrollableElement != doc.documentElement)
|
||||
sendMessageToJava({ gecko: { type: "Panning:Override" } });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (aTopic == "Gesture:Scroll") {
|
||||
// If we've lost our scrollable element, return. Don't cancel the
|
||||
@ -2261,26 +2289,6 @@ var BrowserEventHandler = {
|
||||
}
|
||||
} else if (aTopic == "Gesture:CancelTouch") {
|
||||
this._cancelTapHighlight();
|
||||
} else if (aTopic == "Gesture:ShowPress") {
|
||||
let data = JSON.parse(aData);
|
||||
let closest = ElementTouchHelper.elementFromPoint(BrowserApp.selectedBrowser.contentWindow, data.x, data.y);
|
||||
if (!closest)
|
||||
closest = ElementTouchHelper.anyElementFromPoint(BrowserApp.selectedBrowser.contentWindow, data.x, data.y);
|
||||
if (closest) {
|
||||
this._doTapHighlight(closest);
|
||||
|
||||
// If we've pressed a scrollable element, let Java know that we may
|
||||
// want to override the scroll behaviour (for document sub-frames)
|
||||
this._scrollableElement = this._findScrollableElement(closest, true);
|
||||
this._firstScrollEvent = true;
|
||||
|
||||
if (this._scrollableElement != null) {
|
||||
// Discard if it's the top-level scrollable, we let Java handle this
|
||||
let doc = BrowserApp.selectedBrowser.contentDocument;
|
||||
if (this._scrollableElement != doc.body && this._scrollableElement != doc.documentElement)
|
||||
sendMessageToJava({ gecko: { type: "Panning:Override" } });
|
||||
}
|
||||
}
|
||||
} else if (aTopic == "Gesture:SingleTap") {
|
||||
let element = this._highlightElement;
|
||||
if (element && !SelectHelper.handleClick(element)) {
|
||||
|
Loading…
Reference in New Issue
Block a user