preventDefault on drag on touch

This commit is contained in:
Лаврёнов Антон
2014-05-03 12:11:34 +08:00
parent 6be02874e3
commit 4d447f89c4
3 changed files with 29 additions and 22 deletions

View File

@@ -4,7 +4,7 @@
* http://www.kineticjs.com/ * http://www.kineticjs.com/
* Copyright 2013, Eric Rowell * Copyright 2013, Eric Rowell
* Licensed under the MIT or GPL Version 2 licenses. * Licensed under the MIT or GPL Version 2 licenses.
* Date: 2014-05-02 * Date: 2014-05-03
* *
* Copyright (C) 2011 - 2013 by Eric Rowell * Copyright (C) 2011 - 2013 by Eric Rowell
* *
@@ -9520,11 +9520,14 @@ var Kinetic = {};
if ((typeof evt.webkitMovementX !== 'undefined' || typeof evt.webkitMovementY !== 'undefined') && evt.webkitMovementY === 0 && evt.webkitMovementX === 0) { if ((typeof evt.webkitMovementX !== 'undefined' || typeof evt.webkitMovementY !== 'undefined') && evt.webkitMovementY === 0 && evt.webkitMovementX === 0) {
return; return;
} }
if (!Kinetic.UA.mobile) { if (Kinetic.UA.mobile) {
this._setPointerPosition(evt); return;
var dd = Kinetic.DD, }
shape = this.getIntersection(this.getPointerPosition()); this._setPointerPosition(evt);
var dd = Kinetic.DD, shape;
if (!Kinetic.isDragging()) {
shape = this.getIntersection(this.getPointerPosition());
if(shape && shape.isListening()) { if(shape && shape.isListening()) {
if(!Kinetic.isDragging() && (!this.targetShape || this.targetShape._id !== shape._id)) { if(!Kinetic.isDragging() && (!this.targetShape || this.targetShape._id !== shape._id)) {
if(this.targetShape) { if(this.targetShape) {
@@ -9554,10 +9557,9 @@ var Kinetic = {};
// content event // content event
this._fire(CONTENT_MOUSEMOVE, {evt: evt}); this._fire(CONTENT_MOUSEMOVE, {evt: evt});
}
if(dd) { if(dd) {
dd._drag(evt); dd._drag(evt);
}
} }
// always call preventDefault for desktop events because some browsers // always call preventDefault for desktop events because some browsers
@@ -9705,21 +9707,23 @@ var Kinetic = {};
_touchmove: function(evt) { _touchmove: function(evt) {
this._setPointerPosition(evt); this._setPointerPosition(evt);
var dd = Kinetic.DD, var dd = Kinetic.DD,
shape;
if (!Kinetic.isDragging()) {
shape = this.getIntersection(this.getPointerPosition()); shape = this.getIntersection(this.getPointerPosition());
if (shape && shape.isListening()) {
if (shape && shape.isListening()) { shape._fireAndBubble(TOUCHMOVE, {evt: evt});
shape._fireAndBubble(TOUCHMOVE, {evt: evt}); // only call preventDefault if the shape is listening for events
if (shape.isListening() && evt.preventDefault) {
// only call preventDefault if the shape is listening for events evt.preventDefault();
if (shape.isListening() && evt.preventDefault) { }
evt.preventDefault();
} }
this._fire(CONTENT_TOUCHMOVE, {evt: evt});
} }
this._fire(CONTENT_TOUCHMOVE, {evt: evt});
// start drag and drop
if(dd) { if(dd) {
dd._drag(evt); dd._drag(evt);
if (Kinetic.isDragging()) {
evt.preventDefault();
}
} }
}, },
_setPointerPosition: function(evt) { _setPointerPosition: function(evt) {

6
kinetic.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -590,6 +590,9 @@
} }
if(dd) { if(dd) {
dd._drag(evt); dd._drag(evt);
if (Kinetic.isDragging()) {
evt.preventDefault();
}
} }
}, },
_setPointerPosition: function(evt) { _setPointerPosition: function(evt) {