if( !coll.contains( hitReceiver )) { // add object to selection
coll.add( hitReceiver );
} else { // remove object from selection
coll.remove( hitReceiver );
}
edit = new EditSetSessionObjects( this, doc.getMutableSelectedReceivers(), coll );
doc.getUndoManager().addEdit( edit.perform() );
updateReceiverShapes();
redrawImage();
repaint( virtualToScreenClip( hitReceiver.getBounds() ));
}
} else { // single-selection
coll = doc.getSelectedReceivers().getAll();
if( (hitReceiver == null && !coll.isEmpty()) ||
(hitReceiver != null && !coll.contains( hitReceiver ))) { // selection changed indeed
clipRect = getUnionRect( coll );
coll.clear();
if( hitReceiver != null ) {
coll.add( hitReceiver );
clipRect2 = hitReceiver.getBounds();
} else {
clipRect2 = null;
}
edit = new EditSetSessionObjects( this, doc.getMutableSelectedReceivers(), coll );
doc.getUndoManager().addEdit( edit.perform() );
updateReceiverShapes();
redrawImage();
efficientUpdateAndRepaint( clipRect, clipRect2, false );
}