From 2622c2469c490b41b2b799473dfc8c2c9ce4e06d Mon Sep 17 00:00:00 2001 From: Jaex Date: Fri, 5 Aug 2016 14:37:20 +0300 Subject: [PATCH] Move key move/resize methods to ShapeManager from ResizeManager, Removed Show/Hide methods from ResizeManager instead using Visible property --- .../Shapes/ResizeManager.cs | 142 ++---------------- .../Shapes/ShapeManager.cs | 97 +++++++++++- 2 files changed, 104 insertions(+), 135 deletions(-) diff --git a/ShareX.ScreenCaptureLib/Shapes/ResizeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ResizeManager.cs index a6a389701..299352ec2 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ResizeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ResizeManager.cs @@ -57,6 +57,8 @@ public bool Visible if (shape != null) { + UpdateNodePositions(); + if (shape.NodeType == NodeType.Rectangle) { foreach (NodeObject node in nodes) @@ -81,20 +83,23 @@ public bool Visible } public bool IsResizing { get; private set; } - public bool IsBottomRightResizing { get; set; } + + public bool IsCursorOnNode + { + get + { + return Visible && nodes.Any(node => node.IsCursorHover); + } + } private ShapeManager shapeManager; private NodeObject[] nodes; - private bool isUpPressed, isDownPressed, isLeftPressed, isRightPressed; private Rectangle tempRect; public ResizeManager(BaseRegionForm form, ShapeManager shapeManager) { this.shapeManager = shapeManager; - form.KeyDown += form_KeyDown; - form.KeyUp += form_KeyUp; - nodes = new NodeObject[8]; for (int i = 0; i < 8; i++) @@ -189,7 +194,7 @@ public void Update() { shapeManager.IsCreating = true; - Hide(); + Visible = false; } } } @@ -202,131 +207,6 @@ public void Update() } } - private void form_KeyDown(object sender, KeyEventArgs e) - { - switch (e.KeyCode) - { - case Keys.Left: - case Keys.A: - isLeftPressed = true; - break; - case Keys.Right: - case Keys.D: - isRightPressed = true; - break; - case Keys.Up: - case Keys.W: - isUpPressed = true; - break; - case Keys.Down: - case Keys.S: - isDownPressed = true; - break; - case Keys.Menu: - IsBottomRightResizing = true; - break; - } - - int speed; - - if (e.Shift) - { - speed = RegionCaptureOptions.MoveSpeedMaximum; - } - else - { - speed = RegionCaptureOptions.MoveSpeedMinimum; - } - - int x = 0; - - if (isLeftPressed) - { - x -= speed; - } - - if (isRightPressed) - { - x += speed; - } - - int y = 0; - - if (isUpPressed) - { - y -= speed; - } - - if (isDownPressed) - { - y += speed; - } - - if (x != 0 || y != 0) - { - BaseShape shape = shapeManager.CurrentShape; - - if (shape == null || shapeManager.IsCreating) - { - Cursor.Position = Cursor.Position.Add(x, y); - } - else - { - if (e.Control) - { - shape.Move(x, y); - } - else - { - shape.Resize(x, y, e.Alt); - } - } - } - } - - private void form_KeyUp(object sender, KeyEventArgs e) - { - switch (e.KeyCode) - { - case Keys.Left: - case Keys.A: - isLeftPressed = false; - break; - case Keys.Right: - case Keys.D: - isRightPressed = false; - break; - case Keys.Up: - case Keys.W: - isUpPressed = false; - break; - case Keys.Down: - case Keys.S: - isDownPressed = false; - break; - case Keys.Menu: - IsBottomRightResizing = false; - break; - } - } - - public bool IsCursorOnNode() - { - return Visible && nodes.Any(node => node.IsCursorHover); - } - - public void Show() - { - UpdateNodePositions(); - - Visible = true; - } - - public void Hide() - { - Visible = false; - } - private void UpdateNodePositions() { BaseShape shape = shapeManager.CurrentShape; diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index c2e750176..6712f6ba7 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -206,6 +206,7 @@ public AnnotationOptions AnnotationOptions private ToolStripSeparator tssObjectOptions, tssShapeOptions; private ToolStripMenuItem tsmiDeleteSelected, tsmiDeleteAll, tsmiBorderColor, tsmiFillColor, tsmiHighlightColor; private ToolStripLabeledNumericUpDown tslnudBorderSize, tslnudRoundedRectangleRadius, tslnudBlurRadius, tslnudPixelateSize; + private bool isLeftPressed, isRightPressed, isUpPressed, isDownPressed; public ShapeManager(RectangleRegionForm form) { @@ -937,6 +938,22 @@ private void form_KeyDown(object sender, KeyEventArgs e) case Keys.Menu: IsSnapResizing = true; break; + case Keys.Left: + case Keys.A: + isLeftPressed = true; + break; + case Keys.Right: + case Keys.D: + isRightPressed = true; + break; + case Keys.Up: + case Keys.W: + isUpPressed = true; + break; + case Keys.Down: + case Keys.S: + isDownPressed = true; + break; } if (form.Mode == RectangleRegionMode.Annotation && !IsCreating) @@ -978,6 +995,62 @@ private void form_KeyDown(object sender, KeyEventArgs e) break; } } + + int speed; + + if (e.Shift) + { + speed = RegionCaptureOptions.MoveSpeedMaximum; + } + else + { + speed = RegionCaptureOptions.MoveSpeedMinimum; + } + + int x = 0; + + if (isLeftPressed) + { + x -= speed; + } + + if (isRightPressed) + { + x += speed; + } + + int y = 0; + + if (isUpPressed) + { + y -= speed; + } + + if (isDownPressed) + { + y += speed; + } + + if (x != 0 || y != 0) + { + BaseShape shape = CurrentShape; + + if (shape == null || IsCreating) + { + Cursor.Position = Cursor.Position.Add(x, y); + } + else + { + if (e.Control) + { + shape.Move(x, y); + } + else + { + shape.Resize(x, y, e.Alt); + } + } + } } private void form_KeyUp(object sender, KeyEventArgs e) @@ -1004,6 +1077,22 @@ private void form_KeyUp(object sender, KeyEventArgs e) case Keys.Apps: OpenOptionsMenu(); break; + case Keys.Left: + case Keys.A: + isLeftPressed = false; + break; + case Keys.Right: + case Keys.D: + isRightPressed = false; + break; + case Keys.Up: + case Keys.W: + isUpPressed = false; + break; + case Keys.Down: + case Keys.S: + isDownPressed = false; + break; } } @@ -1058,7 +1147,7 @@ public void Update() private void RegionSelection(Point position) { - if (ResizeManager.IsCursorOnNode()) + if (ResizeManager.IsCursorOnNode) { return; } @@ -1297,7 +1386,7 @@ private void CheckHover() { CurrentHoverRectangle = Rectangle.Empty; - if (!ResizeManager.IsCursorOnNode() && !IsCreating && !IsMoving && !IsResizing) + if (!ResizeManager.IsCursorOnNode && !IsCreating && !IsMoving && !IsResizing) { BaseShape shape = GetShapeIntersect(); @@ -1395,14 +1484,14 @@ private void SelectShape() if (shape != null && !CurrentRectangle.IsEmpty && shape.NodeType != NodeType.Point) { - ResizeManager.Show(); + ResizeManager.Visible = true; } } private void DeselectShape() { CurrentShape = null; - ResizeManager.Hide(); + ResizeManager.Visible = false; } private void DeleteCurrentShape()