void TCanvasSelectionInteractor::EndInteraction () { if ( fRectSelecting ) { bool shifted = GetModifierKeys().IsShiftKeyDown(); if ( !shifted ) fSelection->DeselectAllGraphics (); TCanvasFrontToBackFilter filter; TGRect bounds (GetFirstPoint(), GetLastPoint()); bounds.OrderPoints (); TCanvasRectSelectionFunnel funnel (bounds, *fSelection, shifted); fCanvasView->EnumerateGraphics (filter, funnel); fCanvasView->AdoptCurrentSelection (::CopyPointer(fSelection)); } else { unsigned long n = GetNumberOfPoints (); if ( n >= 2 ) { fCommand->SetOffset (GetPoint(n-1)-GetPoint(n-2)); DoIncrement (*(fBinding.GetObject())); } AdoptAndDoEnd (fBinding.OrphanObject()); fBinding = NIL; } }