Browse Source

Made keyframespos interruptable change and some checks

flabbet 7 months ago
parent
commit
6db12e8cc9

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changes/Animation/KeyFramesStartPos_UpdateableChange.cs

@@ -3,7 +3,7 @@ using PixiEditor.ChangeableDocument.ChangeInfos.Animation;
 
 namespace PixiEditor.ChangeableDocument.Changes.Animation;
 
-internal class KeyFramesStartPos_UpdateableChange : UpdateableChange
+internal class KeyFramesStartPos_UpdateableChange : InterruptableUpdateableChange
 {
     public Guid[] KeyFramesGuid { get;  }
     public int Delta { get; set; }

+ 2 - 1
src/PixiEditor/Models/Rendering/MemberPreviewUpdater.cs

@@ -58,9 +58,10 @@ internal class MemberPreviewUpdater
         {
             RenderWholeCanvasPreview();
         }
-
+        
         RenderLayersPreview(memberGuids);
         RenderMaskPreviews(maskGuids);
+        
         RenderAnimationPreviews(memberGuids, keyFramesGuids);
 
         RenderNodePreviews(nodesGuids);

+ 7 - 1
src/PixiEditor/Views/Animations/Timeline.cs

@@ -191,6 +191,7 @@ internal class Timeline : TemplatedControl, INotifyPropertyChanged
     private bool shouldClearNextSelection = true;
     private CelViewModel clickedCel;
     private bool dragged;
+    private Guid[] draggedKeyFrames;
     private int dragStartFrame;
 
     public event PropertyChangedEventHandler? PropertyChanged;
@@ -229,6 +230,8 @@ internal class Timeline : TemplatedControl, INotifyPropertyChanged
         
         Guid[] ids = SelectedKeyFrames.Select(x => x.Id).ToArray();
         
+        draggedKeyFrames = ids;
+        
         ChangeKeyFramesLengthCommand.Execute((ids, delta, false));
         return true;
     }
@@ -237,7 +240,10 @@ internal class Timeline : TemplatedControl, INotifyPropertyChanged
     {
         if (dragged)
         {
-            ChangeKeyFramesLengthCommand.Execute((SelectedKeyFrames.Select(x => x.Id).ToArray(), 0, true));
+            if (draggedKeyFrames.Length > 0)
+            {
+                ChangeKeyFramesLengthCommand.Execute((draggedKeyFrames.ToArray(), 0, true));
+            }
         }
         clickedCel = null;
     }