|
|
@@ -1,4 +1,5 @@
|
|
|
-using System.Collections.Generic;
|
|
|
+using System.Collections.Concurrent;
|
|
|
+using System.Collections.Generic;
|
|
|
using Avalonia.Input;
|
|
|
using Drawie.Backend.Core.Numerics;
|
|
|
using Drawie.Numerics;
|
|
|
@@ -16,12 +17,11 @@ internal class MouseInputFilter
|
|
|
|
|
|
private Dictionary<MouseButton, bool> buttonStates = new()
|
|
|
{
|
|
|
- [MouseButton.Left] = false,
|
|
|
- [MouseButton.Right] = false,
|
|
|
- [MouseButton.Middle] = false,
|
|
|
+ [MouseButton.Left] = false, [MouseButton.Right] = false, [MouseButton.Middle] = false,
|
|
|
};
|
|
|
|
|
|
public void MouseDownInlet(object args) => MouseDownInlet((MouseOnCanvasEventArgs)args);
|
|
|
+
|
|
|
public void MouseDownInlet(MouseOnCanvasEventArgs args)
|
|
|
{
|
|
|
var button = args.Button;
|
|
|
@@ -35,9 +35,15 @@ internal class MouseInputFilter
|
|
|
OnMouseDown?.Invoke(this, args);
|
|
|
}
|
|
|
|
|
|
- public void MouseMoveInlet(object args) => OnMouseMove?.Invoke(this, ((MouseOnCanvasEventArgs)args));
|
|
|
+ public void MouseMoveInlet(object args)
|
|
|
+ {
|
|
|
+ MouseOnCanvasEventArgs argsTyped = (MouseOnCanvasEventArgs)args;
|
|
|
+ OnMouseMove?.Invoke(this, argsTyped);
|
|
|
+ }
|
|
|
+
|
|
|
public void MouseUpInlet(object args) => MouseUpInlet(((MouseOnCanvasEventArgs)args));
|
|
|
public void MouseUpInlet(object? sender, Point p, MouseButton button) => MouseUpInlet(button);
|
|
|
+
|
|
|
public void MouseUpInlet(MouseOnCanvasEventArgs args)
|
|
|
{
|
|
|
if (args.Button is MouseButton.XButton1 or MouseButton.XButton2 or MouseButton.None)
|
|
|
@@ -53,13 +59,16 @@ internal class MouseInputFilter
|
|
|
|
|
|
public void DeactivatedInlet(object? sender, EventArgs e)
|
|
|
{
|
|
|
- MouseOnCanvasEventArgs argsLeft = new(MouseButton.Left, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0, PointerPointProperties.None, 1);
|
|
|
+ MouseOnCanvasEventArgs argsLeft = new(MouseButton.Left, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0,
|
|
|
+ PointerPointProperties.None, 1);
|
|
|
MouseUpInlet(argsLeft);
|
|
|
-
|
|
|
- MouseOnCanvasEventArgs argsMiddle = new(MouseButton.Middle, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0, PointerPointProperties.None, 1);
|
|
|
+
|
|
|
+ MouseOnCanvasEventArgs argsMiddle = new(MouseButton.Middle, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0,
|
|
|
+ PointerPointProperties.None, 1);
|
|
|
MouseUpInlet(argsMiddle);
|
|
|
-
|
|
|
- MouseOnCanvasEventArgs argsRight = new(MouseButton.Right, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0, PointerPointProperties.None, 1);
|
|
|
+
|
|
|
+ MouseOnCanvasEventArgs argsRight = new(MouseButton.Right, PointerType.Mouse, VecD.Zero, KeyModifiers.None, 0,
|
|
|
+ PointerPointProperties.None, 1);
|
|
|
MouseUpInlet(argsRight);
|
|
|
}
|
|
|
}
|