@@ -273,7 +273,10 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
273273 displayOutlines ( convertPoly ( mergedPolygons , isOpenMode ) , outlines , dragOptions ) ;
274274
275275 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 ) ;
277280 selectionTesters = _res . selectionTesters ;
278281 eventData = _res . eventData ;
279282
@@ -290,7 +293,27 @@ function prepSelect(evt, startX, startY, dragOptions, mode) {
290293 function ( ) {
291294 selection = _doSelect ( selectionTesters , searchTraces ) ;
292295
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+ }
294317
295318 fillRangeItems ( eventData , poly ) ;
296319
0 commit comments