private void HandleMouseUp(DragState state, Shape newShape, IEnumerable<Shape> eraseSet)
{
if (!state.IsDrag)
{
if (state.Clicks >= 2)
{
if (Control.SelectedShapes.Count != 0)
{
var htr = state.ClickedShape;
foreach (var shape in Control.SelectedShapes)
{
DoOrUndo action = shape.DoubleClickAction(htr.Shape == shape ? htr : null);
if (action != null)
_doc.UndoStack.Do(action, false);
}
_doc.UndoStack.FinishGroup();
}
else
{
// Create marker shape
newShape = new Marker(Control.BoxStyle, state.FirstPoint, Control.MarkerRadius, Control.MarkerType);
}
}
else
{
Control.ClickSelect(state.ClickedShape != null ? state.ClickedShape.Shape as Shape : null);
Control._lastClickLocation = state.FirstPoint;
}
}
_doc.UndoStack.AcceptTentativeAction(); // if any
Control._partialSelShape = null;
if (newShape != null)
{
if (newShape.Style == SelectorBoxStyle)
SelectByBox(newShape.BBox);
else
Control.AddShape(newShape);
}
if (eraseSet != null)
Control.DeleteShapes(new Set<Shape>(eraseSet));
_doc.MarkPanels();
}