Browse Source

Found the proper fix of bug commit below lol

flabbet 3 years ago
parent
commit
099f0ab7bf

+ 4 - 7
PixiEditor/Models/Controllers/UndoManager.cs

@@ -103,8 +103,7 @@ namespace PixiEditor.Models.Controllers
         /// Merges multiple undo changes into one.
         /// </summary>
         /// <param name="amount">Amount of changes to squash.</param>
-        /// <param name="reverseOrderInReverseProcess">Reverses order of execution changes in reverseProcess (undo)</param>
-        public void SquashUndoChanges(int amount, bool reverseOrderInReverseProcess = false)
+        public void SquashUndoChanges(int amount)
         {
             string description = UndoStack.ElementAt(UndoStack.Count - amount).Description;
             if (string.IsNullOrEmpty(description))
@@ -112,7 +111,7 @@ namespace PixiEditor.Models.Controllers
                 description = $"Squash {amount} undo changes.";
             }
 
-            SquashUndoChanges(amount, description, reverseOrderInReverseProcess);
+            SquashUndoChanges(amount, description);
         }
 
         /// <summary>
@@ -120,8 +119,7 @@ namespace PixiEditor.Models.Controllers
         /// </summary>
         /// <param name="amount">Amount of changes to squash.</param>
         /// <param name="description">Final change description.</param>
-        /// <param name="reverseOrderInReverseProcess">Reverses order of execution changes in reverseProcess (undo)</param>
-        public void SquashUndoChanges(int amount, string description, bool reverseOrderInReverseProcess = false)
+        public void SquashUndoChanges(int amount, string description)
         {
             Change[] changes = new Change[amount];
             for (int i = 0; i < amount; i++)
@@ -131,8 +129,7 @@ namespace PixiEditor.Models.Controllers
 
             Action<object[]> reverseProcess = (object[] props) =>
             {
-                IEnumerable<object> enumerable = reverseOrderInReverseProcess ? props.Reverse() : props;
-                foreach (var prop in enumerable)
+                foreach (var prop in props)
                 {
                     Change change = (Change)prop;
                     if (change.ReverseProcess == null)

+ 1 - 1
PixiEditor/Models/DataHolders/Document/Document.Layers.cs

@@ -516,7 +516,7 @@ namespace PixiEditor.Models.DataHolders
             renderer?.Dispose();
         }
 
-        private void BuildLayerStructureProcess(object[] parameters)
+        public void BuildLayerStructureProcess(object[] parameters)
         {
             if (parameters.Length > 0 && parameters[0] is WpfObservableRangeCollection<GuidStructureItem> groups)
             {

+ 9 - 3
PixiEditor/Models/Tools/BitmapOperationTool.cs

@@ -38,10 +38,16 @@ namespace PixiEditor.Models.Tools
                 return;
             var document = ViewModels.ViewModelMain.Current.BitmapManager.ActiveDocument;
             var args = new object[] { _change.Document };
-            document.UndoManager.AddUndoChange(_change.ToChange(StorageBasedChange.BasicUndoProcess, args));
-            document.AddLayerStructureToUndo(document.LayerStructure.CloneGroups());
-            document.UndoManager.SquashUndoChanges(2, true);
+            document.UndoManager.AddUndoChange(_change.ToChange(UndoStorageBasedChange, args));
             _change = null;
         }
+
+        private void UndoStorageBasedChange(Layer[] layers, UndoLayer[] data, object[] args)
+        {
+            Document document = (Document)args[0];
+            var ls = document.LayerStructure.CloneGroups();
+            StorageBasedChange.BasicUndoProcess(layers, data, args);
+            document.BuildLayerStructureProcess(new object[] { ls });
+        }
     }
 }