fix Don't let the browser to zoom or select the map on feature selection, r=erilem (closes #3212)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11829 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Stéphane Brunner
2011-03-31 09:45:50 +00:00
parent 0628c05fc3
commit c9d459c7fe
5 changed files with 156 additions and 25 deletions

View File

@@ -59,6 +59,12 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
*/
timerId: null,
/**
* Propery: stopTouchEnd
* {Boolean} Stop event propagation of the next touch up.
*/
stopTouchEnd: false,
/**
* Constructor: OpenLayers.Handler.Path
* Create a new path hander
@@ -244,6 +250,8 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
// double-tap, finalize the geometry
this.lastTouchPx = evt.xy; // for up() to detect dblclick and do nothing
this.finishGeometry();
this.stopTouchEnd = true;
OpenLayers.Event.stop(evt);
window.clearTimeout(this.timerId);
this.timerId = null;
return false;
@@ -259,6 +267,27 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
return OpenLayers.Handler.Point.prototype.touchstart.call(this, evt);
}
},
/**
* Method: touchend
* Handle touchend.
*
* Parameters:
* evt - {Event} The browser event
*
* Returns:
* {Boolean} Allow event propagation
*/
touchend: function(evt) {
evt.xy = this.lastTouchPx;
if (this.stopTouchEnd) {
// don't zoom on the page at feature end
OpenLayers.Event.stop(evt);
this.stopTouchEnd = false;
return false;
}
return this.up(evt);
},
/**
* Method: mousedown
@@ -330,6 +359,8 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
} else {
if (this.passesTolerance(this.lastDown, evt.xy, this.pixelTolerance)) {
if (this.touch) {
// don't allow the browser to zoom
OpenLayers.Event.stop(evt);
this.modifyFeature(evt.xy);
}
if(this.lastUp == null && this.persist) {
@@ -370,6 +401,9 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
* {Boolean} Allow event propagation
*/
dblclick: function(evt) {
if (this.touch) {
return;
}
if(!this.freehandMode(evt)) {
this.finishGeometry();
}