@@ -417,7 +417,6 @@ var zoomPlugin = {
417417
418418 node . removeEventListener ( 'mousemove' , chartInstance . $zoom . _mouseMoveHandler ) ;
419419
420- var chartArea = chartInstance . chartArea ;
421420 var beginPoint = chartInstance . $zoom . _dragZoomStart ;
422421
423422 var offsetX = beginPoint . target . getBoundingClientRect ( ) . left ;
@@ -429,25 +428,30 @@ var zoomPlugin = {
429428 var endY = Math . max ( beginPoint . clientY , event . clientY ) - offsetY ;
430429
431430 var dragDistanceX = endX - startX ;
431+ var dragDistanceY = endY - startY ;
432+
433+ // Remove drag start and end before chart update to stop drawing selected area
434+ chartInstance . $zoom . _dragZoomStart = null ;
435+ chartInstance . $zoom . _dragZoomEnd = null ;
436+
437+ if ( dragDistanceX <= 0 && dragDistanceY <= 0 ) {
438+ return ;
439+ }
440+
441+ var chartArea = chartInstance . chartArea ;
442+
432443 var chartDistanceX = chartArea . right - chartArea . left ;
433444 var xEnabled = directionEnabled ( chartInstance . $zoom . _options . zoom . mode , 'x' ) ;
434445 var zoomX = xEnabled && dragDistanceX ? 1 + ( ( chartDistanceX - dragDistanceX ) / chartDistanceX ) : 1 ;
435446
436- var dragDistanceY = endY - startY ;
437447 var chartDistanceY = chartArea . bottom - chartArea . top ;
438448 var yEnabled = directionEnabled ( chartInstance . $zoom . _options . zoom . mode , 'y' ) ;
439449 var zoomY = yEnabled && dragDistanceY ? 1 + ( ( chartDistanceY - dragDistanceY ) / chartDistanceY ) : 1 ;
440450
441- // Remove drag start and end before chart update to stop drawing selected area
442- chartInstance . $zoom . _dragZoomStart = null ;
443- chartInstance . $zoom . _dragZoomEnd = null ;
444-
445- if ( dragDistanceX > 0 || dragDistanceY > 0 ) {
446- doZoom ( chartInstance , zoomX , zoomY , {
447- x : ( startX - chartArea . left ) / ( 1 - dragDistanceX / chartDistanceX ) + chartArea . left ,
448- y : ( startY - chartArea . top ) / ( 1 - dragDistanceY / chartDistanceY ) + chartArea . top
449- } ) ;
450- }
451+ doZoom ( chartInstance , zoomX , zoomY , {
452+ x : ( startX - chartArea . left ) / ( 1 - dragDistanceX / chartDistanceX ) + chartArea . left ,
453+ y : ( startY - chartArea . top ) / ( 1 - dragDistanceY / chartDistanceY ) + chartArea . top
454+ } ) ;
451455 } ;
452456 node . ownerDocument . addEventListener ( 'mouseup' , chartInstance . $zoom . _mouseUpHandler ) ;
453457
0 commit comments