Browse Source

Update BitmapOperationTool.cs

Krzysztof Krysiński 3 years ago
parent
commit
8d9c4dbf6f
1 changed files with 12 additions and 4 deletions
  1. 12 4
      PixiEditor/Models/Tools/BitmapOperationTool.cs

+ 12 - 4
PixiEditor/Models/Tools/BitmapOperationTool.cs

@@ -25,8 +25,15 @@ namespace PixiEditor.Models.Tools
 
 
         public abstract void Use(Layer layer, List<Coordinates> mouseMove, SKColor color);
         public abstract void Use(Layer layer, List<Coordinates> mouseMove, SKColor color);
 
 
+        /// <summary>
+        /// Executes undo adding procedure.
+        /// </summary>
+        /// <param name="document">Active document</param>
+        /// <remarks>When overriding, set UseDefaultUndoMethod to false.</remarks>
         public override void AddUndoProcess(Document document)
         public override void AddUndoProcess(Document document)
         {
         {
+            if (!UseDefaultUndoMethod) return;
+
             var args = new object[] { _change.Document };
             var args = new object[] { _change.Document };
             document.UndoManager.AddUndoChange(_change.ToChange(UndoProcess, args));
             document.UndoManager.AddUndoChange(_change.ToChange(UndoProcess, args));
             _change = null;
             _change = null;
@@ -34,10 +41,11 @@ namespace PixiEditor.Models.Tools
 
 
         public override void OnRecordingLeftMouseDown(MouseEventArgs e)
         public override void OnRecordingLeftMouseDown(MouseEventArgs e)
         {
         {
-            if (e.LeftButton != MouseButtonState.Pressed) return;
-
-            Document doc = ViewModels.ViewModelMain.Current.BitmapManager.ActiveDocument;
-            _change = new StorageBasedChange(doc, new[] { doc.ActiveLayer }, true);
+            if (UseDefaultUndoMethod && e.LeftButton == MouseButtonState.Pressed)
+            {
+                Document doc = ViewModels.ViewModelMain.Current.BitmapManager.ActiveDocument;
+                _change = new StorageBasedChange(doc, new[] { doc.ActiveLayer }, true);
+            }
         }
         }
 
 
         private void UndoProcess(Layer[] layers, UndoLayer[] data, object[] args)
         private void UndoProcess(Layer[] layers, UndoLayer[] data, object[] args)