Browse Source

Always show context menu on selection tools

CPKreuz 2 years ago
parent
commit
8ac9f41e62

+ 5 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs

@@ -39,6 +39,11 @@ internal abstract class ToolViewModel : NotifyableObject
     /// </summary>
     public virtual bool IsErasable => false;
 
+    /// <summary>
+    /// Determines if PixiEditor should show the context menu on the canvas when right click mode is set to secondary color or erase
+    /// </summary>
+    public virtual bool AlwaysShowContextMenu => false;
+
     private LocalizedString actionDisplay = string.Empty;
     public LocalizedString ActionDisplay
     {

+ 2 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LassoToolViewModel.cs

@@ -19,6 +19,8 @@ internal class LassoToolViewModel : ToolViewModel
         ActionDisplay = defaultActionDisplay;
     }
 
+    public override bool AlwaysShowContextMenu => true;
+
     private SelectionMode modifierKeySelectionMode = SelectionMode.New;
     public SelectionMode ResultingSelectionMode => modifierKeySelectionMode != SelectionMode.New ? modifierKeySelectionMode : SelectMode;
 

+ 2 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MagicWandToolViewModel.cs

@@ -15,6 +15,8 @@ internal class MagicWandToolViewModel : ToolViewModel
     public override LocalizedString Tooltip => new LocalizedString("MAGIC_WAND_TOOL_TOOLTIP", Shortcut);
 
     public override string ToolNameLocalizationKey => "MAGIC_WAND_TOOL";
+    public override bool AlwaysShowContextMenu => true;
+
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     [Settings.Enum("MODE_LABEL")]

+ 2 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/SelectToolViewModel.cs

@@ -15,6 +15,8 @@ internal class SelectToolViewModel : ToolViewModel
 {
     private string defaultActionDisplay = "SELECT_TOOL_ACTION_DISPLAY_DEFAULT";
     public override string ToolNameLocalizationKey => "SELECT_TOOL_NAME";
+    public override bool AlwaysShowContextMenu => true;
+
     public SelectToolViewModel()
     {
         ActionDisplay = defaultActionDisplay;

+ 2 - 1
src/PixiEditor/Views/MainWindow.xaml.cs

@@ -252,7 +252,8 @@ internal partial class MainWindow : Window
 
     private void Viewport_OnContextMenuOpening(object sender, ContextMenuEventArgs e)
     {
-        if (DataContext.ToolsSubViewModel.RightClickMode != RightClickMode.ContextMenu)
+        if (DataContext.ToolsSubViewModel.RightClickMode != RightClickMode.ContextMenu &&
+            !DataContext.ToolsSubViewModel.ActiveTool.AlwaysShowContextMenu)
         {
             e.Handled = true;
         }