Browse Source

Fixed line and symmetry overlay issues

flabbet 8 months ago
parent
commit
c383a1a898

+ 14 - 2
src/PixiEditor/Views/Overlays/LineToolOverlay/LineToolOverlay.cs

@@ -111,6 +111,7 @@ internal class LineToolOverlay : Overlay
 
 
         startHandle = new AnchorHandle(this);
         startHandle = new AnchorHandle(this);
         startHandle.StrokePaint = blackPaint;
         startHandle.StrokePaint = blackPaint;
+        startHandle.OnPress += OnHandlePress;
         startHandle.OnDrag += StartHandleOnDrag;
         startHandle.OnDrag += StartHandleOnDrag;
         startHandle.OnHover += (handle, _) => Refresh();
         startHandle.OnHover += (handle, _) => Refresh();
         startHandle.OnRelease += OnHandleRelease;
         startHandle.OnRelease += OnHandleRelease;
@@ -119,6 +120,7 @@ internal class LineToolOverlay : Overlay
 
 
         endHandle = new AnchorHandle(this);
         endHandle = new AnchorHandle(this);
         endHandle.StrokePaint = blackPaint;
         endHandle.StrokePaint = blackPaint;
+        endHandle.OnPress += OnHandlePress;
         endHandle.OnDrag += EndHandleOnDrag;
         endHandle.OnDrag += EndHandleOnDrag;
         endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
         endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
         endHandle.OnHover += (handle, _) => Refresh();
         endHandle.OnHover += (handle, _) => Refresh();
@@ -127,6 +129,7 @@ internal class LineToolOverlay : Overlay
 
 
         moveHandle = new TransformHandle(this);
         moveHandle = new TransformHandle(this);
         moveHandle.StrokePaint = blackPaint;
         moveHandle.StrokePaint = blackPaint;
+        moveHandle.OnPress += OnHandlePress;
         moveHandle.OnDrag += MoveHandleOnDrag;
         moveHandle.OnDrag += MoveHandleOnDrag;
         endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
         endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
         moveHandle.OnHover += (handle, _) => Refresh();
         moveHandle.OnHover += (handle, _) => Refresh();
@@ -192,10 +195,10 @@ internal class LineToolOverlay : Overlay
             var matrix = context.TotalMatrix;
             var matrix = context.TotalMatrix;
             VecD pos = matrix.MapPoint(lastMousePos);
             VecD pos = matrix.MapPoint(lastMousePos);
             context.SetMatrix(Matrix3X3.Identity);
             context.SetMatrix(Matrix3X3.Identity);
-            
+
             string length = $"L: {(mappedEnd - mappedStart).Length:0.#} px";
             string length = $"L: {(mappedEnd - mappedStart).Length:0.#} px";
             infoBox.DrawInfo(context, length, pos);
             infoBox.DrawInfo(context, length, pos);
-            
+
             context.RestoreToCount(toRestore);
             context.RestoreToCount(toRestore);
         }
         }
     }
     }
@@ -263,6 +266,15 @@ internal class LineToolOverlay : Overlay
         return final;
         return final;
     }
     }
 
 
+    private void OnHandlePress(Handle source, OverlayPointerArgs args)
+    {
+        movedWhileMouseDown = false;
+        mouseDownPos = args.Point;
+
+        lineStartOnMouseDown = LineStart;
+        lineEndOnMouseDown = LineEnd;
+    }
+
     private void MoveHandleOnDrag(Handle source, OverlayPointerArgs args)
     private void MoveHandleOnDrag(Handle source, OverlayPointerArgs args)
     {
     {
         var delta = args.Point - mouseDownPos;
         var delta = args.Point - mouseDownPos;

+ 2 - 0
src/PixiEditor/Views/Overlays/SymmetryOverlay/SymmetryOverlay.cs

@@ -359,6 +359,8 @@ internal class SymmetryOverlay : Overlay
 
 
             CallSymmetryDragCommand((SymmetryAxisDirection)capturedDirection, verticalAxisX);
             CallSymmetryDragCommand((SymmetryAxisDirection)capturedDirection, verticalAxisX);
         }
         }
+        
+        Refresh();
     }
     }
 
 
     protected override void OnOverlayPointerExited(OverlayPointerArgs args)
     protected override void OnOverlayPointerExited(OverlayPointerArgs args)