Kaynağa Gözat

Fixed undo disabling move overlay

flabbet 8 ay önce
ebeveyn
işleme
fa2c232b04

+ 2 - 2
src/PixiEditor/Models/Handlers/IToolHandler.cs

@@ -58,11 +58,11 @@ internal interface IToolHandler : IHandler
 
     public void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown);
     public void UseTool(VecD pos);
-    public void OnSelected(bool restoring);
+    public void OnToolSelected(bool restoring);
 
     public void SetToolSetSettings(IToolSetHandler toolset, Dictionary<string, object>? settings);
     public void ApplyToolSetSettings(IToolSetHandler toolset);
-    public void OnDeselecting(bool transient);
+    public void OnToolDeselected(bool transient);
     
     public void OnPostUndo();
     public void OnPostRedo();

+ 2 - 2
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -228,7 +228,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
 
         if (ActiveTool != null)
         {
-            ActiveTool.OnDeselecting(transient);
+            ActiveTool.OnToolDeselected(transient);
             ActiveTool.Toolbar.SettingChanged -= ToolbarSettingChanged;
         }
 
@@ -261,7 +261,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         LastActionTool?.ModifierKeyChanged(false, false, false);
         //update new tool
         ActiveTool.ModifierKeyChanged(ctrlIsDown, shiftIsDown, altIsDown);
-        ActiveTool.OnSelected(wasTransient);
+        ActiveTool.OnToolSelected(wasTransient);
 
         tool.IsActive = true;
         ActiveTool.IsTransient = transient;

+ 1 - 11
src/PixiEditor/ViewModels/Tools/ShapeTool.cs

@@ -16,7 +16,6 @@ internal abstract class ShapeTool : ToolViewModel, IShapeToolHandler
     public bool DrawEven { get; protected set; }
     public bool DrawFromCenter { get; protected set; }
     
-    protected bool isActivated;
 
     public ShapeTool()
     {
@@ -24,21 +23,12 @@ internal abstract class ShapeTool : ToolViewModel, IShapeToolHandler
         Toolbar = new FillableShapeToolbar();
     }
 
-    public override void OnSelected(bool restoring)
-    {
-        base.OnSelected(restoring);
-        if (!restoring)
-        {
-            isActivated = true;
-        }
-    }
 
-    public override void OnDeselecting(bool transient)
+    protected override void OnDeselecting(bool transient)
     {
         if (!transient)
         {
             ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Operations.TryStopToolLinkedExecutor();
-            isActivated = false;
         }
     }
 }

+ 23 - 2
src/PixiEditor/ViewModels/Tools/ToolViewModel.cs

@@ -151,11 +151,32 @@ internal abstract class ToolViewModel : ObservableObject, IToolHandler
     public virtual void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown) { }
 
     public virtual void UseTool(VecD pos) { }
-    public virtual void OnSelected(bool restoring) { }
+    
+    protected virtual void OnSelected(bool restoring) { }
+
+    public void OnToolSelected(bool restoring)
+    {
+        if (!restoring)
+        {
+            IsActive = true;
+        }
+
+        OnSelected(restoring);
+    }
 
     protected virtual void OnSelectedLayersChanged(IStructureMemberHandler[] layers) { }
 
-    public virtual void OnDeselecting(bool transient)
+    public void OnToolDeselected(bool transient)
+    {
+        if (!transient)
+        {
+            IsActive = false;
+        }
+
+        OnDeselecting(transient);
+    }
+
+    protected virtual void OnDeselecting(bool transient)
     {
     }
     

+ 19 - 4
src/PixiEditor/ViewModels/Tools/Tools/MoveToolViewModel.cs

@@ -54,7 +54,6 @@ internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
 
     public override void UseTool(VecD pos)
     {
-        //ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseShiftLayerTool();
         ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Operations.TransformSelectedArea(true);
     }
 
@@ -77,7 +76,7 @@ internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
         }
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (TransformingSelectedArea)
         {
@@ -87,7 +86,7 @@ internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
         ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Operations.TransformSelectedArea(true);
     }
 
-    public override void OnDeselecting(bool transient)
+    protected override void OnDeselecting(bool transient)
     {
         var vm = ViewModelMain.Current;
         if (!transient)
@@ -97,6 +96,22 @@ internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
         }
     }
 
+    public override void OnPostUndo()
+    {
+        if (IsActive)
+        {
+            OnSelected(false);
+        }
+    }
+
+    public override void OnPostRedo()
+    {
+        if (IsActive)
+        {
+            OnSelected(false);
+        }
+    }
+
     protected override void OnSelectedLayersChanged(IStructureMemberHandler[] layers)
     {
         if (ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument.TransformViewModel.TransformActive)
@@ -105,7 +120,7 @@ internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
         }
 
         OnDeselecting(false);
-        OnSelected(false);
+        OnToolSelected(false);
     }
     
     public void KeepOriginalChanged()

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/MoveViewportToolViewModel.cs

@@ -25,7 +25,7 @@ internal class MoveViewportToolViewModel : ToolViewModel
         Cursor = new Cursor(StandardCursorType.SizeAll);
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         ActionDisplay = new LocalizedString("MOVE_VIEWPORT_ACTION_DISPLAY");
     }

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/PenToolViewModel.cs

@@ -92,7 +92,7 @@ namespace PixiEditor.ViewModels.Tools.Tools
             }
         }
 
-        public override void OnDeselecting(bool transient)
+        protected override void OnDeselecting(bool transient)
         {
             if (!PixelPerfectEnabled)
             {

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs

@@ -49,7 +49,7 @@ internal class RasterEllipseToolViewModel : ShapeTool, IRasterEllipseToolHandler
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseRasterEllipseTool();
     }
     
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if(restoring) return;
         

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs

@@ -56,7 +56,7 @@ internal class RasterLineToolViewModel : ShapeTool, ILineToolHandler
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseRasterLineTool();
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs

@@ -51,7 +51,7 @@ internal class RasterRectangleToolViewModel : ShapeTool, IRasterRectangleToolHan
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseRasterRectangleTool();
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RotateViewportToolViewModel.cs

@@ -23,7 +23,7 @@ internal class RotateViewportToolViewModel : ToolViewModel
     {
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         ActionDisplay = new LocalizedString("ROTATE_VIEWPORT_ACTION_DISPLAY");
     }

+ 3 - 4
src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs

@@ -58,17 +58,16 @@ internal class VectorEllipseToolViewModel : ShapeTool, IVectorEllipseToolHandler
         }
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorEllipseTool();
-        isActivated = true;
     }
 
     public override void OnPostUndo()
     {
-        if (isActivated)
+        if (IsActive)
         {
             OnSelected(false);
         }
@@ -76,7 +75,7 @@ internal class VectorEllipseToolViewModel : ShapeTool, IVectorEllipseToolHandler
 
     public override void OnPostRedo()
     {
-        if (isActivated)
+        if (IsActive)
         {
             OnSelected(false);
         }

+ 6 - 14
src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs

@@ -23,7 +23,6 @@ internal class VectorLineToolViewModel : ShapeTool, IVectorLineToolHandler
     private string defaultActionDisplay = "LINE_TOOL_ACTION_DISPLAY_DEFAULT";
 
     public override bool IsErasable => false;
-    private bool isActivated;
 
     public VectorLineToolViewModel()
     {
@@ -65,40 +64,33 @@ internal class VectorLineToolViewModel : ShapeTool, IVectorLineToolHandler
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorLineTool();
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 
         var document = ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument;
         document.Tools.UseVectorLineTool();
-        isActivated = true;
     }
 
     public override void OnPostUndo()
     {
-        if (isActivated)
+        if (IsActive)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
     public override void OnPostRedo()
     {
-        if (isActivated)
+        if (IsActive)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
     protected override void OnSelectedLayersChanged(IStructureMemberHandler[] layers)
     {
         OnDeselecting(false);
-        OnSelected(false);
-    }
-
-    public override void OnDeselecting(bool transient)
-    {
-        base.OnDeselecting(transient);
-        isActivated = false;
+        OnToolSelected(false);
     }
 }

+ 5 - 5
src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs

@@ -111,7 +111,7 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
         }
     }
     
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 
@@ -119,7 +119,7 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
         isActivated = true;
     }
     
-    public override void OnDeselecting(bool transient)
+    protected override void OnDeselecting(bool transient)
     {
         if (!transient)
         {
@@ -132,7 +132,7 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
     {
         if (isActivated)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
@@ -140,14 +140,14 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
     {
         if (isActivated)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
     protected override void OnSelectedLayersChanged(IStructureMemberHandler[] layers)
     {
         OnDeselecting(false);
-        OnSelected(false);
+        OnToolSelected(false);
     }
 }
 

+ 6 - 7
src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs

@@ -55,33 +55,32 @@ internal class VectorRectangleToolViewModel : ShapeTool, IVectorRectangleToolHan
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorRectangleTool();
     }
 
-    public override void OnSelected(bool restoring)
+    protected override void OnSelected(bool restoring)
     {
         if (restoring) return;
 
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorRectangleTool();
-        isActivated = true;
     }
 
     public override void OnPostUndo()
     {
-        if (isActivated)
+        if (IsActive)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
     public override void OnPostRedo()
     {
-        if (isActivated)
+        if (IsActive)
         {
-            OnSelected(false);
+            OnToolSelected(false);
         }
     }
 
     protected override void OnSelectedLayersChanged(IStructureMemberHandler[] layers)
     {
         OnDeselecting(false);
-        OnSelected(false);
+        OnToolSelected(false);
     }
 }