Browse Source

Fixed move tool undo

flabbet 5 years ago
parent
commit
243224e3c9

+ 8 - 3
PixiEditor/Models/Tools/Tools/MoveTool.cs

@@ -38,8 +38,8 @@ namespace PixiEditor.Models.Tools.Tools
             BitmapPixelChanges beforeMovePixels = BitmapPixelChanges.FromArrays(_startSelection, _startPixelColors);
             BitmapPixelChanges beforeMovePixels = BitmapPixelChanges.FromArrays(_startSelection, _startPixelColors);
             Change changes = UndoManager.UndoStack.Peek();
             Change changes = UndoManager.UndoStack.Peek();
             (changes.OldValue as LayerChanges).PixelChanges.ChangedPixels.
             (changes.OldValue as LayerChanges).PixelChanges.ChangedPixels.
-                AddRangeNewOnly(beforeMovePixels.ChangedPixels);
-            (changes.NewValue as LayerChanges).PixelChanges.ChangedPixels.AddRangeNewOnly(_clearedPixelsChange.ChangedPixels);
+                AddRangeOverride(beforeMovePixels.ChangedPixels);
+            (changes.NewValue as LayerChanges).PixelChanges.ChangedPixels.AddRangeOverride(_clearedPixelsChange.ChangedPixels);
 
 
         }
         }
 
 
@@ -63,7 +63,12 @@ namespace PixiEditor.Models.Tools.Tools
                 _startPixelColors = GetPixelsForSelection(layer, _startSelection);
                 _startPixelColors = GetPixelsForSelection(layer, _startSelection);
             }
             }
 
 
-            return MoveSelection(layer, mouseMove);
+            var selection = MoveSelection(layer, mouseMove);
+            foreach (var item in selection.ChangedPixels.Where(x=> x.Value.A == 0).ToList())
+            {
+                selection.ChangedPixels.Remove(item.Key);
+            }
+            return selection;
         }
         }
 
 
         public BitmapPixelChanges MoveSelection(Layer layer, Coordinates[] mouseMove)
         public BitmapPixelChanges MoveSelection(Layer layer, Coordinates[] mouseMove)

+ 1 - 0
PixiEditor/ViewModels/ViewModelMain.cs

@@ -371,6 +371,7 @@ namespace PixiEditor.ViewModels
         /// <param name="parameter"></param>
         /// <param name="parameter"></param>
         public void Undo(object parameter)
         public void Undo(object parameter)
         {
         {
+            Deselect(null);
             UndoManager.Undo();
             UndoManager.Undo();
         }
         }
         /// <summary>
         /// <summary>