@@ -565,6 +565,7 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
565565 if ( xActive === 'ew' || yActive === 'ns' ) {
566566 var spDx = xActive ? - dx : 0 ;
567567 var spDy = yActive ? - dy : 0 ;
568+
568569 if ( matches . isSubplotConstrained ) {
569570 if ( xActive && yActive ) {
570571 var frac = ( dx / pw - dy / ph ) / 2 ;
@@ -922,6 +923,14 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
922923 clipDx = scaleAndGetShift ( xa , xScaleFactor2 ) ;
923924 }
924925
926+ if ( xScaleFactor2 > 1 && (
927+ ( xa . rangemax !== undefined && editX === ( xa . range [ 0 ] < xa . range [ 1 ] ? 'e' : 'w' ) ) ||
928+ ( xa . rangemin !== undefined && editX === ( xa . range [ 0 ] < xa . range [ 1 ] ? 'w' : 'e' ) )
929+ ) ) {
930+ xScaleFactor2 = 1 ;
931+ clipDx = 0 ;
932+ }
933+
925934 if ( editY2 ) {
926935 yScaleFactor2 = yScaleFactor ;
927936 clipDy = ns || matches . isSubplotConstrained ? viewBox [ 1 ] : getShift ( ya , yScaleFactor2 ) ;
@@ -938,6 +947,14 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
938947 clipDy = scaleAndGetShift ( ya , yScaleFactor2 ) ;
939948 }
940949
950+ if ( yScaleFactor2 > 1 && (
951+ ( ya . rangemax !== undefined && editY === ( ya . range [ 0 ] < ya . range [ 1 ] ? 'n' : 's' ) ) ||
952+ ( ya . rangemin !== undefined && editY === ( ya . range [ 0 ] < ya . range [ 1 ] ? 's' : 'n' ) )
953+ ) ) {
954+ yScaleFactor2 = 1 ;
955+ clipDy = 0 ;
956+ }
957+
941958 // don't scale at all if neither axis is scalable here
942959 if ( ! xScaleFactor2 && ! yScaleFactor2 ) {
943960 continue ;
0 commit comments