@@ -1160,7 +1160,6 @@ BRp.load = function(){
1160
1160
type : 'cxttapstart' ,
1161
1161
cyPosition : { x : now [ 0 ] , y : now [ 1 ] }
1162
1162
} ) ) ;
1163
- r . touchData . start = null ;
1164
1163
}
1165
1164
1166
1165
if ( r . touchData . start ) { r . touchData . start . _private . grabbed = false ; }
@@ -1235,14 +1234,6 @@ BRp.load = function(){
1235
1234
// Tap, taphold
1236
1235
// -----
1237
1236
1238
- r . touchData . startPosition = [ ] ;
1239
- for ( var i = 0 ; i < now . length ; i ++ ) {
1240
- earlier [ i ] = now [ i ] ;
1241
- r . touchData . startPosition [ i ] = now [ i ] ;
1242
- }
1243
-
1244
- r . touchData . startGPosition = [ e . touches [ 0 ] . clientX , e . touches [ 0 ] . clientY ] ;
1245
-
1246
1237
r . touchData . singleTouchMoved = false ;
1247
1238
r . touchData . singleTouchStartTime = + new Date ( ) ;
1248
1239
@@ -1265,6 +1256,18 @@ BRp.load = function(){
1265
1256
} , r . tapholdDuration ) ;
1266
1257
}
1267
1258
1259
+ if ( e . touches . length >= 1 ) {
1260
+ var sPos = r . touchData . startPosition = [ ] ;
1261
+
1262
+ for ( var i = 0 ; i < now . length ; i ++ ) {
1263
+ sPos [ i ] = earlier [ i ] = now [ i ] ;
1264
+ }
1265
+
1266
+ var touch0 = e . touches [ 0 ] ;
1267
+
1268
+ r . touchData . startGPosition = [ touch0 . clientX , touch0 . clientY ] ;
1269
+ }
1270
+
1268
1271
} , false ) ;
1269
1272
1270
1273
var touchmoveHandler ;
@@ -1283,11 +1286,11 @@ BRp.load = function(){
1283
1286
if ( e . touches [ 1 ] ) { var pos = r . projectIntoViewport ( e . touches [ 1 ] . clientX , e . touches [ 1 ] . clientY ) ; now [ 2 ] = pos [ 0 ] ; now [ 3 ] = pos [ 1 ] ; }
1284
1287
if ( e . touches [ 2 ] ) { var pos = r . projectIntoViewport ( e . touches [ 2 ] . clientX , e . touches [ 2 ] . clientY ) ; now [ 4 ] = pos [ 0 ] ; now [ 5 ] = pos [ 1 ] ; }
1285
1288
1289
+ var startGPos = r . touchData . startGPosition ;
1286
1290
var isOverThresholdDrag ;
1287
1291
1288
- if ( capture && e . touches [ 0 ] ) {
1292
+ if ( capture && e . touches [ 0 ] && startGPos ) {
1289
1293
var disp = [ ] ; for ( var j = 0 ; j < now . length ; j ++ ) { disp [ j ] = now [ j ] - earlier [ j ] ; }
1290
- var startGPos = r . touchData . startGPosition ;
1291
1294
var dx = e . touches [ 0 ] . clientX - startGPos [ 0 ] ;
1292
1295
var dx2 = dx * dx ;
1293
1296
var dy = e . touches [ 0 ] . clientY - startGPos [ 1 ] ;
@@ -1315,16 +1318,23 @@ BRp.load = function(){
1315
1318
// cancel ctx gestures if the distance b/t the fingers increases
1316
1319
if ( factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq ) {
1317
1320
r . touchData . cxt = false ;
1318
- if ( r . touchData . start ) { r . touchData . start . unactivate ( ) ; r . touchData . start = null ; }
1321
+
1319
1322
r . data . bgActivePosistion = undefined ;
1323
+
1320
1324
r . redrawHint ( 'select' , true ) ;
1321
1325
1322
1326
var cxtEvt = new Event ( e , {
1323
1327
type : 'cxttapend' ,
1324
1328
cyPosition : { x : now [ 0 ] , y : now [ 1 ] }
1325
1329
} ) ;
1330
+
1326
1331
if ( r . touchData . start ) {
1327
- r . touchData . start . trigger ( cxtEvt ) ;
1332
+ r . touchData . start
1333
+ . unactivate ( )
1334
+ . trigger ( cxtEvt )
1335
+ ;
1336
+
1337
+ r . touchData . start = null ;
1328
1338
} else {
1329
1339
cy . trigger ( cxtEvt ) ;
1330
1340
}
@@ -1416,8 +1426,10 @@ BRp.load = function(){
1416
1426
r . redrawHint ( 'drag' , true ) ;
1417
1427
1418
1428
for ( var i = 0 ; i < draggedEles . length ; i ++ ) {
1419
- draggedEles [ i ] . _private . grabbed = false ;
1420
- draggedEles [ i ] . _private . rscratch . inDragLayer = false ;
1429
+ var de_p = draggedEles [ i ] . _private ;
1430
+
1431
+ de_p . grabbed = false ;
1432
+ de_p . rscratch . inDragLayer = false ;
1421
1433
}
1422
1434
}
1423
1435
@@ -1431,7 +1443,7 @@ BRp.load = function(){
1431
1443
// var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );
1432
1444
var factor = distance2 / distance1 ;
1433
1445
1434
- if ( factor != 1 && twoFingersStartInside ) {
1446
+ if ( twoFingersStartInside ) {
1435
1447
// delta finger1
1436
1448
var df1x = f1x2 - f1x1 ;
1437
1449
var df1y = f1y2 - f1y1 ;
@@ -1468,7 +1480,7 @@ BRp.load = function(){
1468
1480
} ;
1469
1481
1470
1482
// remove dragged eles
1471
- if ( r . touchData . start ) {
1483
+ if ( r . touchData . start && r . touchData . start . active ( ) ) {
1472
1484
var draggedEles = r . dragData . touchDragEles ;
1473
1485
1474
1486
freeDraggedElements ( draggedEles ) ;
@@ -1477,8 +1489,8 @@ BRp.load = function(){
1477
1489
r . redrawHint ( 'eles' , true ) ;
1478
1490
1479
1491
r . touchData . start
1480
- . trigger ( 'free' )
1481
1492
. unactivate ( )
1493
+ . trigger ( 'free' )
1482
1494
;
1483
1495
}
1484
1496
0 commit comments