瀏覽代碼

fixed bad undo and crash

Krzysztof Krysiński 1 月之前
父節點
當前提交
a057f16c90

+ 7 - 1
src/PixiEditor.ChangeableDocument/Changes/Drawing/TransformSelected_UpdateableChange.cs

@@ -80,7 +80,13 @@ internal class TransformSelected_UpdateableChange : InterruptableUpdateableChang
                 tightBoundsSize - masterCorners.RectSize);
         }
 
-        StructureNode firstLayer = target.FindMemberOrThrow(memberData[0].MemberId);
+        var foundMember = target.FindMember(memberData[0].MemberId);
+        if (foundMember is null)
+        {
+            return false;
+        }
+
+        StructureNode firstLayer = foundMember;
         RectD tightBounds = firstLayer.GetTightBounds(frame) ?? default;
 
         if (memberData.Count == 1 && firstLayer is VectorLayerNode vectorLayer)

+ 3 - 1
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/TransformSelectedExecutor.cs

@@ -471,10 +471,12 @@ internal class TransformSelectedExecutor : UpdateableChangeExecutor, ITransforma
         }
 
         internals!.ActionAccumulator.AddActions(new EndPreviewShiftLayers_Action());
-        if (!movedOnce)
+        bool showedTransformButton = Type == ExecutorType.Regular || tool.KeepOriginalImage;
+        if (!movedOnce && showedTransformButton)
         {
             DoTransform(lastCorners);
         }
+
         internals!.ActionAccumulator.AddActions(new EndTransformSelected_Action());
         internals!.ActionAccumulator.AddFinishedActions();
         document!.TransformHandler.HideTransform();