diff --git a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs index 3a449b7e0..def1d4262 100644 --- a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs @@ -46,6 +46,7 @@ public abstract class BaseRegionForm : Form public Rectangle ScreenRectangle0Based { get; private set; } public RegionResult Result { get; private set; } public int MonitorIndex { get; set; } + public List DrawableObjects { get; private set; } protected Image backgroundImage; protected TextureBrush darkBackgroundBrush, lightBackgroundBrush; @@ -56,7 +57,6 @@ public abstract class BaseRegionForm : Form protected Stopwatch timerStart, timerFPS; protected int frameCount; protected bool pause, isKeyAllowed; - protected List drawableObjects; public BaseRegionForm() { @@ -67,7 +67,7 @@ public BaseRegionForm() Icon = ShareXResources.Icon; Cursor = Helpers.CreateCursor(Resources.Crosshair); - drawableObjects = new List(); + DrawableObjects = new List(); Config = new RegionCaptureOptions(); timerStart = new Stopwatch(); timerFPS = new Stopwatch(); @@ -111,7 +111,7 @@ public void Prepare() Prepare(new Screenshot()); } - /// Must be called before show form + // Must be called before show form public virtual void Prepare(Screenshot screenshot) { backgroundImage = screenshot.CaptureFullscreen(); @@ -195,6 +195,7 @@ public void Pause() public void Resume() { pause = false; + Invalidate(); } @@ -280,6 +281,7 @@ public virtual WindowInfo GetWindowInfo() public void Close(RegionResult result) { Result = result; + Close(); } @@ -293,7 +295,7 @@ public void Close(RegionResult result) InputManager.Update(); - DrawableObject[] objects = drawableObjects.OrderByDescending(x => x.Order).ToArray(); + DrawableObject[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray(); if (objects.All(x => !x.IsDragging)) { @@ -343,7 +345,7 @@ protected virtual void Draw(Graphics g) protected void DrawObjects(Graphics g) { - foreach (DrawableObject drawObject in drawableObjects) + foreach (DrawableObject drawObject in DrawableObjects) { if (drawObject.Visible) { @@ -384,13 +386,6 @@ private void DrawFPS(Graphics g) ImageHelpers.DrawTextWithOutline(g, text, textRectangle.Location, infoFontBig, Color.White, Color.Black); } - internal NodeObject MakeNode() - { - NodeObject node = new NodeObject(); - drawableObjects.Add(node); - return node; - } - public IContainer components = null; protected override void Dispose(bool disposing) diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/InputManager.cs b/ShareX.ScreenCaptureLib/RegionHelpers/InputManager.cs index 67eeeec58..177550883 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/InputManager.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/InputManager.cs @@ -30,53 +30,17 @@ namespace ShareX.ScreenCaptureLib { public static class InputManager { - public static Point MousePosition - { - get - { - return mouseState.Position; - } - } + public static Point MousePosition => mouseState.Position; - public static Point PreviousMousePosition - { - get - { - return oldMouseState.Position; - } - } + public static Point PreviousMousePosition => oldMouseState.Position; - public static Point MousePosition0Based - { - get - { - return mouseState.ZeroBasedPosition; - } - } + public static Point MousePosition0Based => mouseState.ZeroBasedPosition; - public static Point PreviousMousePosition0Based - { - get - { - return oldMouseState.ZeroBasedPosition; - } - } + public static Point PreviousMousePosition0Based => oldMouseState.ZeroBasedPosition; - public static Point MouseVelocity - { - get - { - return new Point(MousePosition0Based.X - PreviousMousePosition0Based.X, MousePosition0Based.Y - PreviousMousePosition0Based.Y); - } - } + public static Point MouseVelocity => new Point(MousePosition0Based.X - PreviousMousePosition0Based.X, MousePosition0Based.Y - PreviousMousePosition0Based.Y); - public static bool IsMouseMoved - { - get - { - return MouseVelocity.X != 0 || MouseVelocity.Y != 0; - } - } + public static bool IsMouseMoved => MouseVelocity.X != 0 || MouseVelocity.Y != 0; private static MouseState mouseState = new MouseState(); private static MouseState oldMouseState; diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index db0e259d1..402f45620 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -206,7 +206,9 @@ public ShapeManager(RectangleRegionForm form) for (int i = 0; i < 8; i++) { - Nodes[i] = form.MakeNode(); + NodeObject node = new NodeObject(); + form.DrawableObjects.Add(node); + Nodes[i] = node; } Nodes[(int)NodePosition.BottomRight].Order = 10;