@@ -387,8 +387,28 @@ function sceneOptions(container, subplot, trace, positions) {
387
387
388
388
if ( hasMarkers ) {
389
389
markerOptions = makeMarkerOptions ( markerOpts ) ;
390
- selectedOptions = trace . selected ? makeMarkerOptions ( extend ( { } , markerOpts , trace . selected . marker ) ) : markerOptions ;
391
- unselectedOptions = trace . unselected ? makeMarkerOptions ( extend ( { } , markerOpts , trace . unselected . marker ) ) : markerOptions ;
390
+
391
+ if ( trace . selected . marker . symbol ) {
392
+ selectedOptions = makeMarkerOptions ( extend ( { } , markerOpts , trace . selected . marker ) ) ;
393
+ }
394
+ // shortcut simple selection logic
395
+ else {
396
+ selectedOptions = { } ;
397
+ if ( trace . selected . marker . size ) selectedOptions . sizes = trace . selected . marker . size ;
398
+ if ( trace . selected . marker . color ) selectedOptions . colors = trace . selected . marker . color ;
399
+ if ( trace . selected . marker . opacity !== undefined ) selectedOptions . opacity = trace . selected . marker . opacity ;
400
+ }
401
+
402
+ if ( trace . unselected . marker . symbol ) {
403
+ unselectedOptions = makeMarkerOptions ( extend ( { } , markerOpts , trace . unselected . marker ) ) ;
404
+ }
405
+ // shortcut simple selection logic
406
+ else {
407
+ unselectedOptions = { } ;
408
+ if ( trace . unselected . marker . size ) unselectedOptions . sizes = trace . unselected . marker . size ;
409
+ if ( trace . unselected . marker . color ) unselectedOptions . colors = trace . unselected . marker . color ;
410
+ if ( trace . unselected . marker . opacity !== undefined ) unselectedOptions . opacity = trace . unselected . marker . opacity ;
411
+ }
392
412
393
413
markerOptions . positions = positions ;
394
414
}
@@ -911,7 +931,7 @@ function plot(container, subplot, cdata) {
911
931
if ( ! scene . select2d && scene . scatter2d ) {
912
932
var selectRegl = layout . _glcanvas . data ( ) [ 1 ] . regl ;
913
933
914
- // smol hack to create scatter instance by cloning scatter2d
934
+ // create scatter instance by cloning scatter2d
915
935
scene . select2d = createScatter ( selectRegl , { clone : scene . scatter2d } ) ;
916
936
scene . select2d . update ( scene . selectedOptions ) ;
917
937
0 commit comments