@@ -273,7 +273,10 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
273
273
displayOutlines ( convertPoly ( mergedPolygons , isOpenMode ) , outlines , dragOptions ) ;
274
274
275
275
if ( isSelectMode ) {
276
- var _res = reselect ( gd , selectionTesters , searchTraces , dragOptions ) ;
276
+ var _res = reselect ( gd ) ;
277
+ var extraPoints = _res . eventData ? _res . eventData . points . slice ( ) : [ ] ;
278
+
279
+ _res = reselect ( gd , selectionTesters , searchTraces , dragOptions ) ;
277
280
selectionTesters = _res . selectionTesters ;
278
281
eventData = _res . eventData ;
279
282
@@ -290,7 +293,27 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
290
293
function ( ) {
291
294
selection = _doSelect ( selectionTesters , searchTraces ) ;
292
295
293
- eventData = { points : selection } ;
296
+ var newPoints = selection . slice ( ) ;
297
+
298
+ for ( var w = 0 ; w < extraPoints . length ; w ++ ) {
299
+ var p = extraPoints [ w ] ;
300
+ var found = false ;
301
+ for ( var u = 0 ; u < newPoints . length ; u ++ ) {
302
+ if (
303
+ newPoints [ u ] . curveNumber === p . curveNumber &&
304
+ newPoints [ u ] . pointNumber === p . pointNumber
305
+ ) {
306
+ found = true ;
307
+ break ;
308
+ }
309
+ }
310
+ if ( ! found ) newPoints . push ( p ) ;
311
+ }
312
+
313
+ if ( newPoints . length ) {
314
+ if ( ! eventData ) eventData = { } ;
315
+ eventData . points = newPoints ;
316
+ }
294
317
295
318
fillRangeItems ( eventData , poly ) ;
296
319
0 commit comments