Bug fix for dygraph point selection touch event.
[dygraphs.git] / src / dygraph-interaction-model.js
index 349fd3e..6557b11 100644 (file)
@@ -430,7 +430,9 @@ DygraphInteraction.startTouch = function(event, g, context) {
   context.initialTouches = touches;
 
   if (touches.length == 1) {
-    // This is just a swipe.
+    // This is possbily a touchOVER, save the last touch to check
+    context.lastTouch = event;
+    // or This is just a swipe. 
     context.initialPinchCenter = touches[0];
     context.touchDirections = { x: true, y: true };
   } else if (touches.length >= 2) {
@@ -475,6 +477,9 @@ DygraphInteraction.startTouch = function(event, g, context) {
 DygraphInteraction.moveTouch = function(event, g, context) {
   // If the tap moves, then it's definitely not part of a double-tap.
   context.startTimeForDoubleTapMs = null;
+ // clear the last touch if it's doing something else
+  context.lastTouch = null;
 
   var i, touches = [];
   for (i = 0; i < event.touches.length; i++) {
@@ -581,6 +586,13 @@ DygraphInteraction.endTouch = function(event, g, context) {
         context.doubleTapY && Math.abs(context.doubleTapY - t.screenY) < 50) {
       g.resetZoom();
     } else {
+      
+      if (context.lastTouch !== null){
+        // no double-tap, pan or pinch so it's a touchOVER
+        event.isTouchOver = true;
+        g.mouseMove_(event);
+      }
+
       context.startTimeForDoubleTapMs = now;
       context.doubleTapX = t.screenX;
       context.doubleTapY = t.screenY;
@@ -706,7 +718,8 @@ DygraphInteraction.defaultModel = {
     // Give plugins a chance to grab this event.
     var e = {
       canvasx: context.dragEndX,
-      canvasy: context.dragEndY
+      canvasy: context.dragEndY,
+      cancelable: true,
     };
     if (g.cascadeEvents_('dblclick', e)) {
       return;