Browse Source

Fixed copying selection

flabbet 9 tháng trước cách đây
mục cha
commit
1d299c7587

+ 2 - 0
src/PixiEditor.ChangeableDocument/Changeables/Graph/Interfaces/IReadOnlyStructureNode.cs

@@ -2,6 +2,7 @@
 using Drawie.Backend.Core;
 using Drawie.Backend.Core.Surfaces;
 using Drawie.Numerics;
+using PixiEditor.ChangeableDocument.Rendering;
 using BlendMode = PixiEditor.ChangeableDocument.Enums.BlendMode;
 
 namespace PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces;
@@ -18,4 +19,5 @@ public interface IReadOnlyStructureNode : IReadOnlyNode, ISceneObject, IChunkRen
     public RectD? GetTightBounds(KeyFrameTime frameTime);
     public ChunkyImage? EmbeddedMask { get; }
     public ShapeCorners GetTransformationCorners(KeyFrameTime frameTime);
+    public void RenderForOutput(RenderContext context, DrawingSurface renderTarget, RenderOutputProperty output);
 }

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

@@ -100,7 +100,7 @@ public abstract class StructureNode : RenderNode, IReadOnlyStructureNode, IRende
     public abstract VecD GetScenePosition(KeyFrameTime frameTime);
     public abstract VecD GetSceneSize(KeyFrameTime frameTime);
 
-    private void RenderForOutput(RenderContext context, DrawingSurface renderTarget, RenderOutputProperty output)
+    public void RenderForOutput(RenderContext context, DrawingSurface renderTarget, RenderOutputProperty output)
     {
         var renderObjectContext = CreateSceneContext(context, renderTarget, output);
 

+ 4 - 4
src/PixiEditor.ChangeableDocument/Rendering/DocumentRenderer.cs

@@ -68,9 +68,9 @@ public class DocumentRenderer : IPreviewRenderable
     }
 
 
-    public void RenderLayer(DrawingSurface renderOn, Guid nodeId, ChunkResolution resolution, KeyFrameTime frameTime)
+    public void RenderLayer(DrawingSurface renderOn, Guid layerId, ChunkResolution resolution, KeyFrameTime frameTime)
     {
-        var node = Document.FindNode(nodeId);
+        var node = Document.FindMember(layerId);
 
         if (node is null)
         {
@@ -79,8 +79,8 @@ public class DocumentRenderer : IPreviewRenderable
 
         RenderContext context = new(renderOn, frameTime, resolution, Document.Size);
         context.FullRerender = true;
-
-        node.Execute(context);
+        
+        node.RenderForOutput(context, renderOn, null);
     }
 
     public static IReadOnlyNodeGraph ConstructMembersOnlyGraph(IReadOnlyNodeGraph fullGraph)

+ 3 - 1
src/PixiEditor/Models/Controllers/ClipboardController.cs

@@ -144,7 +144,9 @@ internal static class ClipboardController
     {
         Guid[] layerIds = GetLayerIds(data);
 
-        if (layerIds != null && layerIds.Length > 0)
+        bool hasPos = data.Any(x => x.Contains(ClipboardDataFormats.PositionFormat));
+        
+        if (layerIds is { Length: > 0 } && !hasPos)
         {
             foreach (var layerId in layerIds)
             {