Browse Source

PasteAsNew now defaults to smart layers

Krzysztof Krysiński 3 weeks ago
parent
commit
cb0da5d099

+ 1 - 0
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/NestedDocumentNode.cs

@@ -334,6 +334,7 @@ public class NestedDocumentNode : LayerNode, IInputDependentOutputs, ITransforma
         clonedContext.Graph = Instance?.NodeGraph;
         clonedContext.Graph = Instance?.NodeGraph;
         clonedContext.DocumentSize = Instance?.Size ?? VecI.Zero;
         clonedContext.DocumentSize = Instance?.Size ?? VecI.Zero;
         clonedContext.ProcessingColorSpace = Instance?.ProcessingColorSpace;
         clonedContext.ProcessingColorSpace = Instance?.ProcessingColorSpace;
+        clonedContext.RenderOutputSize = clonedContext.DocumentSize;
         clonedContext.DesiredSamplingOptions =
         clonedContext.DesiredSamplingOptions =
             BilinearSampling.Value ? SamplingOptions.Bilinear : SamplingOptions.Default;
             BilinearSampling.Value ? SamplingOptions.Bilinear : SamplingOptions.Default;
         if (clonedContext.VisibleDocumentRegion.HasValue)
         if (clonedContext.VisibleDocumentRegion.HasValue)

+ 13 - 33
src/PixiEditor/Models/Controllers/ClipboardController.cs

@@ -291,7 +291,7 @@ internal static class ClipboardController
         }
         }
 
 
         List<DataImage> images = await GetImage(data);
         List<DataImage> images = await GetImage(data);
-        if (images.Count == 0)
+        if (images.Count == 0 || pasteAsNew)
         {
         {
             return await TryPasteNestedDocument(document, manager, data);
             return await TryPasteNestedDocument(document, manager, data);
         }
         }
@@ -306,31 +306,11 @@ internal static class ClipboardController
                 position = VecI.Zero;
                 position = VecI.Zero;
             }
             }
 
 
-            if (pasteAsNew)
-            {
-                var guid = document.Operations.CreateStructureMember(StructureMemberType.ImageLayer,
-                    new LocalizedString("NEW_LAYER"), false);
-
-                if (guid == null)
-                {
-                    return false;
-                }
-
-                manager.Owner.ToolsSubViewModel.SetActiveTool<MoveToolViewModel>(false);
-                document.Operations.SetSelectedMember(guid.Value);
-                document.Operations.InvokeCustomAction(() =>
-                {
-                    document.Operations.PasteImageWithTransform(dataImage.Image, position, guid.Value, false);
-                });
-            }
-            else
+            manager.Owner.ToolsSubViewModel.SetActiveTool<MoveToolViewModel>(false);
+            document.Operations.InvokeCustomAction(() =>
             {
             {
-                manager.Owner.ToolsSubViewModel.SetActiveTool<MoveToolViewModel>(false);
-                document.Operations.InvokeCustomAction(() =>
-                {
-                    document.Operations.PasteImageWithTransform(dataImage.Image, position);
-                });
-            }
+                document.Operations.PasteImageWithTransform(dataImage.Image, position);
+            });
 
 
             return true;
             return true;
         }
         }
@@ -406,18 +386,18 @@ internal static class ClipboardController
         List<Guid> adjustedIds = new();
         List<Guid> adjustedIds = new();
         foreach (var layerId in layerIds)
         foreach (var layerId in layerIds)
         {
         {
-           var parents = targetDoc.StructureHelper.GetParents(layerId);
-           if (parents.Count == 0)
-           {
+            var parents = targetDoc.StructureHelper.GetParents(layerId);
+            if (parents.Count == 0)
+            {
                 adjustedIds.Add(layerId);
                 adjustedIds.Add(layerId);
                 continue;
                 continue;
-           }
+            }
 
 
-           // only include if no parent is in layerIds
-           if (!parents.Any(x => layerIds.Contains(x.Id)))
-           {
+            // only include if no parent is in layerIds
+            if (!parents.Any(x => layerIds.Contains(x.Id)))
+            {
                 adjustedIds.Add(layerId);
                 adjustedIds.Add(layerId);
-           }
+            }
         }
         }
 
 
         var all = targetDoc.StructureHelper.GetAllMembersInOrder();
         var all = targetDoc.StructureHelper.GetAllMembersInOrder();