ソースを参照

Fix resize canvas and resize image changes failing validation when resizing to the same size

Equbuxu 2 年 前
コミット
d7e6ffe94f

+ 1 - 5
src/PixiEditor.ChangeableDocument/Changes/Root/ClipCanvas_Change.cs

@@ -5,12 +5,8 @@ namespace PixiEditor.ChangeableDocument.Changes.Root;
 
 internal class ClipCanvas_Change : ResizeBasedChangeBase
 {
-
     [GenerateMakeChangeAction]
-    public ClipCanvas_Change()
-    {
-        
-    }
+    public ClipCanvas_Change() { }
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {

+ 3 - 0
src/PixiEditor.ChangeableDocument/Changes/Root/ResizeBasedChangeBase.cs

@@ -31,6 +31,9 @@ internal abstract class ResizeBasedChangeBase : Change
     
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     {
+        if (target.Size == _originalSize)
+            return new None();
+
         target.Size = _originalSize;
         target.ForEveryMember((member) =>
         {

+ 7 - 1
src/PixiEditor.ChangeableDocument/Changes/Root/ResizeCanvas_Change.cs

@@ -18,7 +18,7 @@ internal class ResizeCanvas_Change : ResizeBasedChangeBase
 
     public override bool InitializeAndValidate(Document target)
     {
-        if (target.Size == newSize || newSize.X < 1 || newSize.Y < 1)
+        if (newSize.X < 1 || newSize.Y < 1)
             return false;
         
         return base.InitializeAndValidate(target);
@@ -26,6 +26,12 @@ internal class ResizeCanvas_Change : ResizeBasedChangeBase
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {
+        if (_originalSize == newSize)
+        {
+            ignoreInUndo = true;
+            return new None();
+        }
+
         target.Size = newSize;
         target.VerticalSymmetryAxisX = Math.Clamp(_originalVerAxisX, 0, target.Size.X);
         target.HorizontalSymmetryAxisY = Math.Clamp(_originalHorAxisY, 0, target.Size.Y);

+ 7 - 1
src/PixiEditor.ChangeableDocument/Changes/Root/ResizeImage_Change.cs

@@ -27,7 +27,7 @@ internal class ResizeImage_Change : Change
     
     public override bool InitializeAndValidate(Document target)
     {
-        if (target.Size == newSize || newSize.X < 1 || newSize.Y < 1)
+        if (newSize.X < 1 || newSize.Y < 1)
             return false;
         
         originalSize = target.Size;
@@ -76,6 +76,12 @@ internal class ResizeImage_Change : Change
     
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {
+        if (originalSize == newSize)
+        {
+            ignoreInUndo = true;
+            return new None();
+        }
+
         target.Size = newSize;
         target.VerticalSymmetryAxisX = Math.Clamp(originalVerAxisX, 0, target.Size.X);
         target.HorizontalSymmetryAxisY = Math.Clamp(originalHorAxisY, 0, target.Size.Y);