private void CanvasMouseDown(object sender, MouseEventArgs e) { if (!(e.OriginalSource is Canvas)) { return; } if (mouseState != MouseState.Normal) { return; } Point mousePosition = e.GetPosition(canvas); mouseShiftDownPosition = mousePosition; if (Forms.Control.ModifierKeys == Forms.Keys.Shift || Forms.Control.ModifierKeys == (Forms.Keys.Shift | Forms.Keys.Control)) { mouseShiftDown = true; canvas.CaptureMouse(); Canvas.SetLeft(selectionBox, mouseShiftDownPosition.X); Canvas.SetTop(selectionBox, mouseShiftDownPosition.Y); selectionBox.Width = 0; selectionBox.Height = 0; selectionBox.Visibility = Visibility.Visible; } if (GraphMode == GraphMode.DraggingMode) { if (!(Forms.Control.ModifierKeys == Forms.Keys.Control || Forms.Control.ModifierKeys == (Forms.Keys.Shift | Forms.Keys.Control))) { CleanSelectedVertices(); CleanSelectedEdges(); } previousMousePosition = mousePosition; mouseState = MouseState.MovingGraph; ViewWindow.Static = true; } else if (GraphMode == GraphMode.InsertingMode) { if (Forms.Control.ModifierKeys == Forms.Keys.Shift || Forms.Control.ModifierKeys == (Forms.Keys.Shift | Forms.Keys.Control)) { return; } Point corePos = ViewWindow.VisualToCorePosition(mousePosition); clickedVertex = Core.CreateVertex(corePos.X, corePos.Y); SelectionProcessing(); } }