@@ -847,16 +847,20 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
847847 var bl = constants . radialDragBoxSize ;
848848 var bl2 = bl / 2 ;
849849 var radialDrag = dragBox . makeDragger ( layers , 'radialdrag' , 'move' , - bl2 , - bl2 , bl , bl ) ;
850- var radialDrag3 = d3 . select ( radialDrag ) ;
851850 var dragOpts = { element : radialDrag , gd : gd } ;
851+ var tx = cx + ( radius + bl2 ) * Math . cos ( angle0 ) ;
852+ var ty = cy - ( radius + bl2 ) * Math . sin ( angle0 ) ;
852853
853- radialDrag3 . attr ( 'transform' , strTranslate (
854- cx + ( radius + bl2 ) * Math . cos ( angle0 ) ,
855- cy - ( radius + bl2 ) * Math . sin ( angle0 )
856- ) )
857- . call ( setCursor , 'crosshair' ) ;
854+ d3 . select ( radialDrag )
855+ . attr ( 'transform' , strTranslate ( tx , ty ) )
856+ . call ( setCursor , 'crosshair' ) ;
858857
859- var x0 , y0 , moveFn2 , angle1 , rng1 ;
858+ // move function (either rotate or rerange flavor)
859+ var moveFn2 ;
860+ // rotate angle on done
861+ var angle1 ;
862+ // rerange range[1] on done
863+ var rng1 ;
860864
861865 function moveFn ( dx , dy ) {
862866 if ( moveFn2 ) {
@@ -869,7 +873,7 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
869873 // mostly perpendicular motions rotate,
870874 // mostly parallel motions re-range
871875 if ( ! isNaN ( comp ) ) {
872- moveFn2 = comp < 0.7 ? rotateMove : rerangeMove ;
876+ moveFn2 = comp < 0.5 ? rotateMove : rerangeMove ;
873877 }
874878 }
875879 }
@@ -883,12 +887,10 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
883887 }
884888
885889 function rotateMove ( dx , dy ) {
886- var x1 = x0 + dx ;
887- var y1 = y0 + dy ;
888- var ax = x1 - cx - bl2 ;
889- var ay = cy - y1 + bl2 ;
890+ var x1 = tx + dx ;
891+ var y1 = ty + dy ;
890892
891- angle1 = rad2deg ( Math . atan2 ( ay , ax ) ) ;
893+ angle1 = rad2deg ( Math . atan2 ( cy - y1 , x1 - cx ) ) ;
892894
893895 var transform = strTranslate ( cx , cy ) + strRotate ( - angle1 ) ;
894896 layers [ 'radial-axis' ] . attr ( 'transform' , transform ) ;
@@ -936,14 +938,11 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
936938 }
937939 }
938940
939- dragOpts . prepFn = function ( evt , startX , startY ) {
941+ dragOpts . prepFn = function ( ) {
940942 moveFn2 = null ;
941943 angle1 = null ;
942944 rng1 = null ;
943945
944- x0 = startX ;
945- y0 = startY ;
946-
947946 dragOpts . moveFn = moveFn ;
948947 dragOpts . doneFn = doneFn ;
949948
0 commit comments