Browse Source

Improved preserving settings when editing

flabbet 8 months ago
parent
commit
a8f9b9ee0b

+ 3 - 3
src/PixiEditor.ChangeableDocument/Changes/Drawing/CombineStructureMembersOnto_Change.cs

@@ -159,7 +159,9 @@ internal class CombineStructureMembersOnto_Change : Change
         ShapeVectorData targetData = vectorLayer.ShapeData ?? null;
         VectorPath? targetPath = targetData?.ToPath();
 
-        foreach (var guid in toCombine)
+        var reversed = toCombine.Reverse().ToHashSet();
+        
+        foreach (var guid in reversed)
         {
             if (target.FindMember(guid) is not VectorLayerNode vectorNode)
                 continue;
@@ -186,8 +188,6 @@ internal class CombineStructureMembersOnto_Change : Change
             }
         }
 
-        targetPath.FillType = PathFillType.EvenOdd;
-
         var pathData = new PathVectorData(targetPath)
         {
             StrokeWidth = targetData.StrokeWidth,

+ 10 - 0
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/VectorPathToolExecutor.cs

@@ -60,6 +60,7 @@ internal class VectorPathToolExecutor : UpdateableChangeExecutor, IPathExecutorF
             if (shapeData is PathVectorData pathData)
             {
                 startingPath = new VectorPath(pathData.Path);
+                ApplySettings(pathData);
                 startingPath.Transform(pathData.TransformationMatrix);
             }
             else if (shapeData is null)
@@ -261,4 +262,13 @@ internal class VectorPathToolExecutor : UpdateableChangeExecutor, IPathExecutorF
 
         return shapeData is not IReadOnlyPathData pathData || pathData.Path.IsClosed;
     }
+    
+    private void ApplySettings(PathVectorData pathData)
+    {
+        toolbar.ToolSize = pathData.StrokeWidth;
+        toolbar.StrokeColor = pathData.StrokeColor.ToColor();
+        toolbar.ToolSize = pathData.StrokeWidth;
+        toolbar.Fill = pathData.FillColor.A > 0;
+        toolbar.FillColor = pathData.FillColor.ToColor();
+    }
 }