Browse Source

Line Shift snapping works now independendly

flabbet 11 months ago
parent
commit
c9f9ef1af9

+ 11 - 9
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/LineExecutor.cs

@@ -48,7 +48,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
         {
             return ExecutionState.Success;
         }
-        
+
         if (member is IVectorLayerHandler)
         {
             var node = (VectorLayerNode)internals.Tracker.Document.FindMember(member.Id);
@@ -66,7 +66,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
                 ActiveMode = ShapeToolMode.Preview;
                 return ExecutionState.Success;
             }
-            
+
             ActiveMode = ShapeToolMode.Transform;
         }
         else
@@ -82,7 +82,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
     protected abstract IAction TransformOverlayMoved(VecD start, VecD end);
     protected abstract IAction SettingsChange();
     protected abstract IAction EndDraw();
-    
+
     protected override void PrecisePositionChangeTransformMode(VecD pos)
     {
     }
@@ -91,9 +91,6 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
     {
         startedDrawing = true;
 
-        if (toolViewModel!.Snap)
-            pos = ComplexShapeToolExecutor<IShapeToolHandler>.Get45IncrementedPosition(startDrawingPos, pos);
-
         VecD snapped =
             document!.SnappingHandler.SnappingController.GetSnapPoint(pos, out string snapX, out string snapY);
 
@@ -110,6 +107,11 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
             }
         }
 
+        if (toolViewModel!.Snap)
+        {
+            snapped = ComplexShapeToolExecutor<IShapeToolHandler>.Get45IncrementedPosition(startDrawingPos, pos);
+        }
+
         HighlightSnapping(snapX, snapY);
 
         curPos = snapped;
@@ -156,7 +158,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
     {
         if (ActiveMode != ShapeToolMode.Transform)
             return;
-        
+
         document!.LineToolOverlayHandler.Nudge(distance);
     }
 
@@ -170,7 +172,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
     {
         if (ActiveMode != ShapeToolMode.Transform)
             return;
-        
+
         document!.LineToolOverlayHandler.Undo();
     }
 
@@ -178,7 +180,7 @@ internal abstract class LineExecutor<T> : SimpleShapeToolExecutor where T : ILin
     {
         if (ActiveMode != ShapeToolMode.Transform)
             return;
-        
+
         document!.LineToolOverlayHandler.Redo();
     }