Browse Source

Fixed null layer to create crash

flabbet 7 months ago
parent
commit
48c67c0a56

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changes/Structure/CreateStructureMember_Change.cs

@@ -27,7 +27,7 @@ internal class CreateStructureMember_Change : Change
 
     public override bool InitializeAndValidate(Document target)
     {
-        if(structureMemberOfType.IsAbstract || structureMemberOfType.IsInterface || !structureMemberOfType.IsAssignableTo(typeof(StructureNode)))
+        if(structureMemberOfType == null || structureMemberOfType.IsAbstract || structureMemberOfType.IsInterface || !structureMemberOfType.IsAssignableTo(typeof(StructureNode)))
             return false;
         
         return target.TryFindNode<Node>(parentGuid, out _);

+ 1 - 1
src/PixiEditor/Models/Handlers/IToolHandler.cs

@@ -52,7 +52,7 @@ internal interface IToolHandler : IHandler
     /// <summary>
     ///     Layer type that should be created if no layer is selected incompatible one.
     /// </summary>
-    public Type LayerTypeToCreateOnEmptyUse { get; }
+    public Type? LayerTypeToCreateOnEmptyUse { get; }
 
     public virtual string? DefaultNewLayerName => null;
 

+ 2 - 0
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -385,6 +385,8 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
 
         if (ActiveTool is not { CanBeUsedOnActiveLayer: true })
         {
+            if(ActiveTool.LayerTypeToCreateOnEmptyUse == null) return;
+            
             Guid? createdLayer = Owner.LayersSubViewModel.NewLayer(
                 ActiveTool.LayerTypeToCreateOnEmptyUse,
                 ActionSource.Automated,