From 2c4943234f505610704c121dc4503d011e9d5205 Mon Sep 17 00:00:00 2001 From: Jaex Date: Tue, 12 Dec 2017 19:12:25 +0300 Subject: [PATCH] Added mouse events to DrawableObject, if object clicked then handle mouse input, crop confirm button works now --- .../RegionHelpers/DrawableObject.cs | 15 +++++++++++++++ ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs | 6 +++--- ShareX.ScreenCaptureLib/Shapes/Tool/CropTool.cs | 10 +++++++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/DrawableObject.cs b/ShareX.ScreenCaptureLib/RegionHelpers/DrawableObject.cs index 2986aaffc..cb68c9e49 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/DrawableObject.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/DrawableObject.cs @@ -24,12 +24,17 @@ #endregion License Information (GPL v3) using System.Drawing; +using System.Windows.Forms; namespace ShareX.ScreenCaptureLib { internal abstract class DrawableObject { + public event MouseEventHandler MousePressed; + public event MouseEventHandler MouseReleased; + public bool Visible { get; set; } + public bool HandleMouseInput { get; set; } = true; public Rectangle Rectangle { get; set; } public bool IsCursorHover { get; set; } public bool IsDragging { get; protected set; } @@ -54,11 +59,21 @@ public virtual void OnDraw(Graphics g) public virtual void OnMousePressed(Point position) { IsDragging = true; + + if (MousePressed != null) + { + MousePressed(this, new MouseEventArgs(MouseButtons.Left, 1, position.X, position.Y, 0)); + } } public virtual void OnMouseReleased(Point position) { IsDragging = false; + + if (MouseReleased != null) + { + MouseReleased(this, new MouseEventArgs(MouseButtons.Left, 1, position.X, position.Y, 0)); + } } } } \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index 3f98892fa..d91d51109 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -208,7 +208,7 @@ public bool NodesVisible } } - public bool IsCursorOnNode => NodesVisible && ResizeNodes.Any(node => node.IsCursorHover); + public bool IsCursorOnObject => DrawableObjects.Any(x => x.HandleMouseInput && x.IsCursorHover); public event Action CurrentShapeChanged; public event Action CurrentShapeTypeChanged; @@ -696,7 +696,7 @@ public void Update() private void StartRegionSelection() { - if (IsCursorOnNode) + if (IsCursorOnObject) { return; } @@ -1003,7 +1003,7 @@ private void UpdateCurrentHoverShape() private BaseShape CheckHover() { - if (!IsCursorOnNode && !IsCreating && !IsMoving && !IsResizing) + if (!IsCursorOnObject && !IsCreating && !IsMoving && !IsResizing) { BaseShape shape = GetIntersectShape(); diff --git a/ShareX.ScreenCaptureLib/Shapes/Tool/CropTool.cs b/ShareX.ScreenCaptureLib/Shapes/Tool/CropTool.cs index e573fb1e6..d44fe4da0 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Tool/CropTool.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Tool/CropTool.cs @@ -24,6 +24,7 @@ #endregion License Information (GPL v3) using System.Drawing; +using System.Windows.Forms; namespace ShareX.ScreenCaptureLib { @@ -41,7 +42,6 @@ public override void OnUpdate() if (confirmButton != null) { - confirmButton.Visible = true; confirmButton.Rectangle = new Rectangle(Rectangle.Right - buttonSize.Width, Rectangle.Bottom + buttonOffset, buttonSize.Width, buttonSize.Height); } @@ -57,11 +57,15 @@ public override void OnDraw(Graphics g) public override void OnCreated() { - confirmButton = new ConfirmButton(); + confirmButton = new ConfirmButton() + { + Visible = true + }; + confirmButton.MousePressed += ConfirmButton_MousePressed; Manager.DrawableObjects.Add(confirmButton); } - private void ConfirmCrop() + private void ConfirmButton_MousePressed(object sender, MouseEventArgs e) { if (IsValidShape) {