@@ -76,19 +76,22 @@ module.exports = function dragBox(gd, plotinfo, x, y, w, h, ns, ew) {
76
76
dragClass = ns + ew + 'drag' ;
77
77
78
78
var dragger3 = plotinfo . draglayer . selectAll ( '.' + dragClass ) . data ( [ 0 ] ) ;
79
+
79
80
dragger3 . enter ( ) . append ( 'rect' )
80
81
. classed ( 'drag' , true )
81
82
. classed ( dragClass , true )
82
83
. style ( { fill : 'transparent' , 'stroke-width' : 0 } )
83
84
. attr ( 'data-subplot' , plotinfo . id ) ;
85
+
84
86
dragger3 . call ( Drawing . setRect , x , y , w , h )
85
87
. call ( setCursor , cursor ) ;
88
+
86
89
var dragger = dragger3 . node ( ) ;
87
90
88
91
// still need to make the element if the axes are disabled
89
92
// but nuke its events (except for maindrag which needs them for hover)
90
93
// and stop there
91
- if ( ! yActive && ! xActive ) {
94
+ if ( ! yActive && ! xActive && ! isSelectOrLasso ( fullLayout . dragmode ) ) {
92
95
dragger . onmousedown = null ;
93
96
dragger . style . pointerEvents = isMainDrag ? 'all' : 'none' ;
94
97
return dragger ;
@@ -133,7 +136,7 @@ module.exports = function dragBox(gd, plotinfo, x, y, w, h, ns, ew) {
133
136
dragOptions . doneFn = dragDone ;
134
137
clearSelect ( ) ;
135
138
}
136
- else if ( dragModeNow === 'select' || dragModeNow === 'lasso' ) {
139
+ else if ( isSelectOrLasso ( dragModeNow ) ) {
137
140
prepSelect ( e , startX , startY , dragOptions , dragModeNow ) ;
138
141
}
139
142
}
@@ -670,3 +673,9 @@ function removeZoombox(gd) {
670
673
. selectAll ( '.zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners' )
671
674
. remove ( ) ;
672
675
}
676
+
677
+ function isSelectOrLasso ( dragmode ) {
678
+ var modes = [ 'lasso' , 'select' ] ;
679
+
680
+ return modes . indexOf ( dragmode ) !== - 1 ;
681
+ }
0 commit comments