/// <summary> /// Обрабатывает левый клик /// </summary> /// <param name="location"></param> private void ProcessLeftClick(Point location) { if (RedactorState == RedactorStates.Dragging) { RedactorState = RedactorStates.Default; return; } if (RedactorState == RedactorStates.Default) { var newActiveGlyph = FindGlyphIn(location); if (newActiveGlyph == ActiveGlyph) { switch (Mode) { case RedactorModes.Create: StartCreatingNewGlyphIn(location); return; case RedactorModes.Move: StartMoving(); return; case RedactorModes.AddPolygon: throw new NotImplementedException(); } } else { Focus(newActiveGlyph); if (ActiveGlyph is LineGlyph || ActiveGlyph is WordGlyph) { ActiveGlyph.ProcessSelection(); } _redactor.Invalidate(); } } if (ActiveGlyph is PathGlyph) { (ActiveGlyph as PathGlyph).ProcessLeftClick(location); } }