Browse Source

Fixed non erasable vector tools crash

flabbet 8 months ago
parent
commit
f5347f85b9

+ 3 - 0
src/PixiEditor/ViewModels/SubViewModels/IoViewModel.cs

@@ -240,6 +240,9 @@ internal class IoViewModel : SubViewModel<ViewModelMain>
         if (currentToolSize != null)
         {
             tools.EnableSharedToolbar = false;
+            var eraserTool = tools.GetTool<EraserToolViewModel>();
+            if(eraserTool == null) return;
+            
             var toolSize = tools.GetTool<EraserToolViewModel>().Toolbar.Settings.First(x => x.Name == "ToolSize");
             previousEraseSize = (int)toolSize.Value;
             toolSize.Value = tools.ActiveTool is PenToolViewModel { PixelPerfectEnabled: true }

+ 2 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs

@@ -18,6 +18,8 @@ internal class VectorEllipseToolViewModel : ShapeTool, IVectorEllipseToolHandler
     private string defaultActionDisplay = "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT";
     public override string ToolNameLocalizationKey => "ELLIPSE_TOOL";
 
+    public override bool IsErasable => false;
+
     public VectorEllipseToolViewModel()
     {
         ActionDisplay = defaultActionDisplay;

+ 2 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs

@@ -21,6 +21,8 @@ internal class VectorLineToolViewModel : ShapeTool, IVectorLineToolHandler
 {
     private string defaultActionDisplay = "LINE_TOOL_ACTION_DISPLAY_DEFAULT";
 
+    public override bool IsErasable => false;
+    
     public VectorLineToolViewModel()
     {
         ActionDisplay = defaultActionDisplay;

+ 3 - 2
src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs

@@ -18,8 +18,9 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
     public override Type LayerTypeToCreateOnEmptyUse { get; } = typeof(VectorLayerNode);
     public override LocalizedString Tooltip => new LocalizedString("PATH_TOOL_TOOLTIP", Shortcut);
 
-    public override string DefaultIcon => PixiPerfectIcons.VectorPen; 
+    public override string DefaultIcon => PixiPerfectIcons.VectorPen;
     public override bool StopsLinkedToolOnUse => false;
+    public override bool IsErasable => false;
 
     private bool isActivated;
 
@@ -38,7 +39,7 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
             ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument;
 
         if (doc is null || isActivated) return;
-        
+
         if (!doc.PathOverlayViewModel.IsActive)
         {
             doc?.Tools.UseVectorPathTool();

+ 4 - 3
src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs

@@ -17,6 +17,7 @@ internal class VectorRectangleToolViewModel : ShapeTool, IVectorRectangleToolHan
 {
     private string defaultActionDisplay = "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT";
     public override string ToolNameLocalizationKey => "RECTANGLE_TOOL";
+    public override bool IsErasable => false;
 
     public VectorRectangleToolViewModel()
     {
@@ -53,17 +54,17 @@ internal class VectorRectangleToolViewModel : ShapeTool, IVectorRectangleToolHan
     public override void OnSelected(bool restoring)
     {
         if (restoring) return;
-        
+
         var document = ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument;
         var layer = document.SelectedStructureMember;
-        if (layer is IVectorLayerHandler vectorLayer && 
+        if (layer is IVectorLayerHandler vectorLayer &&
             vectorLayer.GetShapeData(document.AnimationDataViewModel.ActiveFrameTime) is IReadOnlyRectangleData)
         {
             ShapeCorners corners = vectorLayer.TransformationCorners;
             ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument.TransformViewModel.ShowTransform(
                 DocumentTransformMode.Scale_Rotate_Shear_NoPerspective, false, corners, false);
         }
-        
+
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorRectangleTool();
     }