Browse Source

Safety checks

Krzysztof Krysiński 4 days ago
parent
commit
6bbd77c1a4

+ 3 - 0
src/PixiEditor/ViewModels/Document/DocumentViewModel.cs

@@ -1057,6 +1057,9 @@ internal partial class DocumentViewModel : PixiObservableObject, IDocument
         {
             // it might've been a better idea to implement this function asynchronously
             // via a passthrough action to avoid all the try catches
+            if (SizeBindable.X <= 0 || SizeBindable.Y <= 0)
+                return Colors.Transparent;
+
             if (scope == DocumentScope.Canvas)
             {
                 using Surface

+ 9 - 4
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -834,12 +834,17 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         {
             if (toolHandler is ToolViewModel tool)
             {
-                List<IStructureMemberHandler> selectedLayers = new List<IStructureMemberHandler>
+                List<IStructureMemberHandler> selectedLayers = new List<IStructureMemberHandler>();
+                if (doc.SelectedStructureMember != null)
                 {
-                    doc.SelectedStructureMember
-                };
+                    selectedLayers.Add(doc.SelectedStructureMember);
+                }
+
+                if (doc.SoftSelectedStructureMembers != null)
+                {
+                    selectedLayers.AddRange(doc.SoftSelectedStructureMembers.Except(selectedLayers));
+                }
 
-                selectedLayers.AddRange(doc.SoftSelectedStructureMembers.Except(selectedLayers));
                 tool.SelectedLayersChanged(selectedLayers.ToArray());
             }
         }