@@ -113,12 +113,14 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
113
113
114
114
var dragger = makeRectDragger ( plotinfo , ns + ew + 'drag' , cursor , x , y , w , h ) ;
115
115
116
+ var allFixedRanges = ! yActive && ! xActive ;
117
+
116
118
// still need to make the element if the axes are disabled
117
119
// but nuke its events (except for maindrag which needs them for hover)
118
120
// and stop there
119
- if ( ! yActive && ! xActive && ! isSelectOrLasso ( fullLayout . dragmode ) ) {
121
+ if ( allFixedRanges && ! isMainDrag ) {
120
122
dragger . onmousedown = null ;
121
- dragger . style . pointerEvents = isMainDrag ? 'all' : 'none' ;
123
+ dragger . style . pointerEvents = 'none' ;
122
124
return dragger ;
123
125
}
124
126
@@ -129,24 +131,34 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
129
131
prepFn : function ( e , startX , startY ) {
130
132
var dragModeNow = gd . _fullLayout . dragmode ;
131
133
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
+ }
141
145
}
146
+ // all other draggers just pan
147
+ else dragModeNow = 'pan' ;
142
148
}
143
- // all other draggers just pan
144
- else dragModeNow = 'pan' ;
145
149
146
150
if ( dragModeNow === 'lasso' ) dragOptions . minDrag = 1 ;
147
151
else dragOptions . minDrag = undefined ;
148
152
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' ) {
150
162
dragOptions . moveFn = zoomMove ;
151
163
dragOptions . doneFn = zoomDone ;
152
164
@@ -162,11 +174,6 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
162
174
dragOptions . doneFn = dragTail ;
163
175
clearSelect ( zoomlayer ) ;
164
176
}
165
- else if ( isSelectOrLasso ( dragModeNow ) ) {
166
- dragOptions . xaxes = xa ;
167
- dragOptions . yaxes = ya ;
168
- prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
169
- }
170
177
} ,
171
178
clickFn : function ( numClicks , evt ) {
172
179
removeZoombox ( gd ) ;
0 commit comments