Browse Source

Fixed line overlays cursors and move snapping

flabbet 11 months ago
parent
commit
551fe4cad5

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

@@ -80,18 +80,23 @@ internal class LineToolOverlay : Overlay
         startHandle = new AnchorHandle(this);
         startHandle.HandlePen = blackPen;
         startHandle.OnDrag += StartHandleOnDrag;
+        startHandle.OnHover += handle => Refresh();
         startHandle.OnRelease += OnHandleRelease;
         AddHandle(startHandle);
 
         endHandle = new AnchorHandle(this);
         endHandle.HandlePen = blackPen;
         endHandle.OnDrag += EndHandleOnDrag;
+        endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
+        endHandle.OnHover += handle => Refresh();
         endHandle.OnRelease += OnHandleRelease;
         AddHandle(endHandle);
 
         moveHandle = new TransformHandle(this);
         moveHandle.HandlePen = blackPen;
         moveHandle.OnDrag += MoveHandleOnDrag;
+        endHandle.Cursor = new Cursor(StandardCursorType.Arrow);
+        moveHandle.OnHover += handle => Refresh();
         moveHandle.OnRelease += OnHandleRelease;
         AddHandle(moveHandle);
     }
@@ -192,8 +197,8 @@ internal class LineToolOverlay : Overlay
     {
         var delta = position - mouseDownPos;
         
-        VecD mappedStart = LineStart;
-        VecD mappedEnd = LineEnd;
+        VecD mappedStart = lineStartOnMouseDown;
+        VecD mappedEnd = lineEndOnMouseDown;
 
         ((string, string), VecD) snapDeltaResult = TrySnapLine(mappedStart, mappedEnd, delta);
 

+ 1 - 0
src/PixiEditor/Views/Overlays/SnappingOverlay.cs

@@ -26,6 +26,7 @@ internal class SnappingOverlay : Overlay
         /*TODO: Theme variant is not present, that's why Dark is hardcoded*/        
         horizontalAxisPen = Application.Current.Styles.TryGetResource("HorizontalSnapAxisBrush", ThemeVariant.Dark, out var horizontalAxisBrush) ? new Pen((IBrush)horizontalAxisBrush, 0.2f) : new Pen(Brushes.Red, 0.2f);
         verticalAxisPen = Application.Current.Styles.TryGetResource("VerticalSnapAxisBrush", ThemeVariant.Dark, out var verticalAxisBrush) ? new Pen((IBrush)verticalAxisBrush, 0.2f) : new Pen(Brushes.Green, 0.2f);
+        IsHitTestVisible = false;
     }
 
     public override void RenderOverlay(DrawingContext context, RectD canvasBounds)

+ 4 - 1
src/PixiEditor/Views/Rendering/Scene.cs

@@ -197,7 +197,10 @@ internal class Scene : Zoombox.Zoombox, ICustomHitTest
                 if (!overlay.CanRender()) continue;
 
                 overlay.RenderOverlay(context, dirtyBounds);
-                Cursor = overlay.Cursor ?? DefaultCursor;
+                if (overlay.IsHitTestVisible)
+                {
+                    Cursor = overlay.Cursor ?? DefaultCursor;
+                }
             }
         }
     }