Browse Source

Fixed double lbm firing for transform selected executor

Krzysztof Krysiński 6 months ago
parent
commit
45e7990e19

+ 8 - 1
src/PixiEditor/Views/Overlays/TransformOverlay/TransformOverlay.cs

@@ -294,6 +294,7 @@ internal class TransformOverlay : Overlay
     private bool actuallyMoved = false;
     private bool actuallyMoved = false;
     private bool isShearing = false;
     private bool isShearing = false;
     private int lastClickCount = 0;
     private int lastClickCount = 0;
+    private bool pressedWithinBounds = false;
 
 
     public TransformOverlay()
     public TransformOverlay()
     {
     {
@@ -555,6 +556,8 @@ internal class TransformOverlay : Overlay
 
 
         if (Handles.Any(x => x.IsWithinHandle(x.Position, args.Point, ZoomScale))) return;
         if (Handles.Any(x => x.IsWithinHandle(x.Position, args.Point, ZoomScale))) return;
 
 
+        pressedWithinBounds = TestHit(args.Point);
+
         if (CanShear(args.Point, out var side))
         if (CanShear(args.Point, out var side))
         {
         {
             StartShearing(args, side);
             StartShearing(args, side);
@@ -651,9 +654,12 @@ internal class TransformOverlay : Overlay
     protected override void OnOverlayPointerReleased(OverlayPointerArgs e)
     protected override void OnOverlayPointerReleased(OverlayPointerArgs e)
     {
     {
         if (e.InitialPressMouseButton != MouseButton.Left)
         if (e.InitialPressMouseButton != MouseButton.Left)
+        {
+            pressedWithinBounds = false;
             return;
             return;
+        }
 
 
-        if (!isRotating && !actuallyMoved)
+        if (!isRotating && !actuallyMoved && pressedWithinBounds)
         {
         {
             MouseOnCanvasEventArgs args = new(MouseButton.Left, e.Point, e.Modifiers, lastClickCount);
             MouseOnCanvasEventArgs args = new(MouseButton.Left, e.Point, e.Modifiers, lastClickCount);
             PassthroughPointerPressedCommand?.Execute(args);
             PassthroughPointerPressedCommand?.Execute(args);
@@ -682,6 +688,7 @@ internal class TransformOverlay : Overlay
         StopMoving();
         StopMoving();
         IsSizeBoxEnabled = false;
         IsSizeBoxEnabled = false;
         capturedAnchor = null;
         capturedAnchor = null;
+        pressedWithinBounds = false;
     }
     }
 
 
     public override bool TestHit(VecD point)
     public override bool TestHit(VecD point)