fix regression where drawing accurately is not possible anymore, r=jorix,bbinet (closes #3272)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11962 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -35,6 +35,14 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
|
||||
*/
|
||||
maxVertices: null,
|
||||
|
||||
/**
|
||||
* Property: doubleTouchTolerance
|
||||
* {Number} Maximum number of pixels between two touches for
|
||||
* the gesture to be considered a "finalize feature" action.
|
||||
* Default is 20.
|
||||
*/
|
||||
doubleTouchTolerance: 20,
|
||||
|
||||
/**
|
||||
* Property: freehand
|
||||
* {Boolean} In freehand mode, the handler starts the path on mouse down,
|
||||
@@ -241,9 +249,9 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
|
||||
*/
|
||||
touchstart: function(evt) {
|
||||
if (this.timerId &&
|
||||
this.passesTolerance(this.lastTouchPx, evt.xy, this.dblclickTolerance)) {
|
||||
this.passesTolerance(this.lastTouchPx, evt.xy,
|
||||
this.doubleTouchTolerance)) {
|
||||
// double-tap, finalize the geometry
|
||||
this.lastTouchPx = evt.xy; // for up() to detect dblclick and do nothing
|
||||
this.finishGeometry();
|
||||
window.clearTimeout(this.timerId);
|
||||
this.timerId = null;
|
||||
@@ -277,7 +285,9 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
|
||||
if(this.freehandMode(evt)) {
|
||||
stopDown = true;
|
||||
}
|
||||
if (!this.touch && (!this.lastDown || !this.passesTolerance(this.lastDown, evt.xy, this.pixelTolerance))) {
|
||||
if (!this.touch && (!this.lastDown ||
|
||||
!this.passesTolerance(this.lastDown, evt.xy,
|
||||
this.pixelTolerance))) {
|
||||
this.modifyFeature(evt.xy, !!this.lastUp);
|
||||
}
|
||||
this.mouseDown = true;
|
||||
@@ -323,13 +333,13 @@ OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
|
||||
* {Boolean} Allow event propagation
|
||||
*/
|
||||
up: function (evt) {
|
||||
if (this.mouseDown && (!this.lastUp || !this.passesTolerance(
|
||||
this.lastUp, evt.xy, this.dblclickTolerance))) {
|
||||
if (this.mouseDown && (!this.lastUp || !this.lastUp.equals(evt.xy))) {
|
||||
if(this.stoppedDown && this.freehandMode(evt)) {
|
||||
this.removePoint();
|
||||
this.finalize();
|
||||
} else {
|
||||
if (this.passesTolerance(this.lastDown, evt.xy, this.pixelTolerance)) {
|
||||
if (this.passesTolerance(this.lastDown, evt.xy,
|
||||
this.pixelTolerance)) {
|
||||
if (this.touch) {
|
||||
this.modifyFeature(evt.xy);
|
||||
}
|
||||
|
||||
@@ -106,13 +106,6 @@ OpenLayers.Handler.Point = OpenLayers.Class(OpenLayers.Handler, {
|
||||
*/
|
||||
pixelTolerance: 5,
|
||||
|
||||
/**
|
||||
* APIProperty: dblclickTolerance
|
||||
* {Number} Maximum number of pixels between two touchend for an
|
||||
* event to be considered a dblclick. Default is 20.
|
||||
*/
|
||||
dblclickTolerance: 20,
|
||||
|
||||
/**
|
||||
* Property: touch
|
||||
* {Boolean} Indcates the support of touch events.
|
||||
@@ -526,8 +519,7 @@ OpenLayers.Handler.Point = OpenLayers.Class(OpenLayers.Handler, {
|
||||
return true;
|
||||
}
|
||||
// ignore double-clicks
|
||||
if (this.lastUp && this.passesTolerance(this.lastUp, evt.xy,
|
||||
this.dblclickTolerance)) {
|
||||
if (this.lastUp && this.lastUp.equals(evt.xy)) {
|
||||
return true;
|
||||
}
|
||||
if (this.lastDown && this.passesTolerance(this.lastDown, evt.xy,
|
||||
@@ -564,13 +556,9 @@ OpenLayers.Handler.Point = OpenLayers.Class(OpenLayers.Handler, {
|
||||
/**
|
||||
* Method: passesTolerance
|
||||
* Determine whether the event is within the optional pixel tolerance.
|
||||
* Note that the pixel tolerance check only works if mousedown events get
|
||||
* to the listeners registered here. If they are stopped by other
|
||||
* elements, <pixelTolerance> and <dblclickTolerance> will have no effect
|
||||
* here (this method will always return true).
|
||||
*
|
||||
* Returns:
|
||||
* {Boolean} The click is within the pixel tolerance (if specified).
|
||||
* {Boolean} The event is within the pixel tolerance (if specified).
|
||||
*/
|
||||
passesTolerance: function(pixel1, pixel2, tolerance) {
|
||||
var passes = true;
|
||||
|
||||
Reference in New Issue
Block a user