which does the same by code.
It return a list of the objects found inside.
Another idea comes from autocad.
There you drag a selection-frame around objects, where the drag-direction plays a role. Draging the selection-frame from left-to-right selects all obects that are complete inside the frame. Draging the selection-frame from right-to-left selects all objects which are inside but also all objects which cross the selection-frame (like the current method of SG). Also using a different line type for the different selection-directions would be usefull.