@@ -113,12 +113,14 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
113113
114114 var dragger = makeRectDragger ( plotinfo , ns + ew + 'drag' , cursor , x , y , w , h ) ;
115115
116+ var allFixedRanges = ! yActive && ! xActive ;
117+
116118 // still need to make the element if the axes are disabled
117119 // but nuke its events (except for maindrag which needs them for hover)
118120 // and stop there
119- if ( ! yActive && ! xActive && ! isSelectOrLasso ( fullLayout . dragmode ) ) {
121+ if ( allFixedRanges && ! isMainDrag ) {
120122 dragger . onmousedown = null ;
121- dragger . style . pointerEvents = isMainDrag ? 'all' : 'none' ;
123+ dragger . style . pointerEvents = 'none' ;
122124 return dragger ;
123125 }
124126
@@ -129,24 +131,34 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
129131 prepFn : function ( e , startX , startY ) {
130132 var dragModeNow = gd . _fullLayout . dragmode ;
131133
132- if ( isMainDrag ) {
133- // main dragger handles all drag modes, and changes
134- // to pan (or to zoom if it already is pan) on shift
135- if ( e . shiftKey ) {
136- if ( dragModeNow === 'pan' ) dragModeNow = 'zoom' ;
137- else if ( ! isSelectOrLasso ( dragModeNow ) ) dragModeNow = 'pan' ;
138- }
139- else if ( e . ctrlKey ) {
140- dragModeNow = 'pan' ;
134+ if ( ! allFixedRanges ) {
135+ if ( isMainDrag ) {
136+ // main dragger handles all drag modes, and changes
137+ // to pan (or to zoom if it already is pan) on shift
138+ if ( e . shiftKey ) {
139+ if ( dragModeNow === 'pan' ) dragModeNow = 'zoom' ;
140+ else if ( ! isSelectOrLasso ( dragModeNow ) ) dragModeNow = 'pan' ;
141+ }
142+ else if ( e . ctrlKey ) {
143+ dragModeNow = 'pan' ;
144+ }
141145 }
146+ // all other draggers just pan
147+ else dragModeNow = 'pan' ;
142148 }
143- // all other draggers just pan
144- else dragModeNow = 'pan' ;
145149
146150 if ( dragModeNow === 'lasso' ) dragOptions . minDrag = 1 ;
147151 else dragOptions . minDrag = undefined ;
148152
149- if ( dragModeNow === 'zoom' ) {
153+ if ( isSelectOrLasso ( dragModeNow ) ) {
154+ dragOptions . xaxes = xa ;
155+ dragOptions . yaxes = ya ;
156+ prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
157+ }
158+ else if ( allFixedRanges ) {
159+ clearSelect ( zoomlayer ) ;
160+ }
161+ else if ( dragModeNow === 'zoom' ) {
150162 dragOptions . moveFn = zoomMove ;
151163 dragOptions . doneFn = zoomDone ;
152164
@@ -162,11 +174,6 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
162174 dragOptions . doneFn = dragTail ;
163175 clearSelect ( zoomlayer ) ;
164176 }
165- else if ( isSelectOrLasso ( dragModeNow ) ) {
166- dragOptions . xaxes = xa ;
167- dragOptions . yaxes = ya ;
168- prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
169- }
170177 } ,
171178 clickFn : function ( numClicks , evt ) {
172179 removeZoombox ( gd ) ;
0 commit comments