protected override void HandleMouseUp(object sender, MouseButtonEventArgs e)
{
switch (mouseMode)
{
case MouseMode.Nothing:
var mouseUpOnNode = false;
foreach (var node in NodeCollection)
{
if (VisualTreeHelper.HitTest(node.Border, e.GetPosition(node)) != null)
mouseUpOnNode = true;
}
// if mouse up in empty space unselect all nodes
if (!mouseUpOnNode && e.ChangedButton != MouseButton.Right)
{
UnselectAllElements();
}
break;
case MouseMode.Panning:
ShowElementsAfterTransformation();
Cursor = Cursors.Arrow;
mouseMode = MouseMode.Nothing;
break;
case MouseMode.PreSelectionRectangle:
UnselectAllElements();
mouseMode = MouseMode.Nothing;
break;
case MouseMode.SelectionRectangle:
Children.Remove(selectionRectangle);
selectionRectangle = null;
mouseMode = SelectedNodes.Count > 0 ? MouseMode.Selection : MouseMode.Nothing;
break;
}
}