diff --git a/src/modules/launcher/PowerLauncher.UI/ResultList.xaml b/src/modules/launcher/PowerLauncher.UI/ResultList.xaml
index 1770da807e..33172f1fe9 100644
--- a/src/modules/launcher/PowerLauncher.UI/ResultList.xaml
+++ b/src/modules/launcher/PowerLauncher.UI/ResultList.xaml
@@ -8,11 +8,16 @@
xmlns:ToolkitBehaviors="using:Microsoft.Toolkit.Uwp.UI.Animations.Behaviors"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
+ xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters"
d:DesignHeight="300"
d:DesignWidth="720">
+
+
+
+ Style="{StaticResource ListViewNoAnimations}"
+ >
-
-
-
-
-
-
-
-
+
-
+
@@ -64,16 +63,12 @@
Grid.Column="1"
Margin="0,0,42,0"
Height="46"
+ Visibility="{Binding AreContextButtonsActive, Converter={StaticResource BoolToVisibilityConverter}}"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding ContextMenuItems}"
SelectionMode="Single"
SelectedIndex="{Binding ContextMenuSelectedIndex}">
-
-
-
-
-
diff --git a/src/modules/launcher/Wox/ViewModel/ContextMenuItemViewModel.cs b/src/modules/launcher/Wox/ViewModel/ContextMenuItemViewModel.cs
index ceb166c71a..d21f372204 100644
--- a/src/modules/launcher/Wox/ViewModel/ContextMenuItemViewModel.cs
+++ b/src/modules/launcher/Wox/ViewModel/ContextMenuItemViewModel.cs
@@ -12,6 +12,6 @@ namespace Wox.ViewModel
public ICommand Command { get; set; }
public string AcceleratorKey { get; set; }
public string AcceleratorModifiers { get; set; }
- public bool IsEnabled { get; set; }
+ public bool IsAcceleratorKeyEnabled { get; set; }
}
}
\ No newline at end of file
diff --git a/src/modules/launcher/Wox/ViewModel/ResultViewModel.cs b/src/modules/launcher/Wox/ViewModel/ResultViewModel.cs
index 3dfb8eaef1..e073e8baca 100644
--- a/src/modules/launcher/Wox/ViewModel/ResultViewModel.cs
+++ b/src/modules/launcher/Wox/ViewModel/ResultViewModel.cs
@@ -17,12 +17,24 @@ namespace Wox.ViewModel
{
public class ResultViewModel : BaseModel
{
+ public enum ActivationType
+ {
+ Selection,
+ Hover
+ };
+
public List ContextMenuItems { get; set; }
- public ICommand LoadContextMenuCommand { get; set; }
+ public ICommand ActivateContextButtonsHoverCommand { get; set; }
+ public ICommand ActivateContextButtonsSelectionCommand { get; set; }
+ public ICommand DeactivateContextButtonsHoverCommand { get; set; }
+
+ public ICommand DeactivateContextButtonsSelectionCommand { get; set; }
public bool IsSelected { get; set; }
+ public bool AreContextButtonsActive { get; set; }
+
public int ContextMenuSelectedIndex { get; set; }
const int NoSelectionIndex = -1;
@@ -34,9 +46,62 @@ namespace Wox.ViewModel
Result = result;
}
ContextMenuSelectedIndex = NoSelectionIndex;
- LoadContextMenuCommand = new RelayCommand(LoadContextMenu);
+ ActivateContextButtonsHoverCommand = new RelayCommand(ActivateContextButtonsHoverAction);
+ ActivateContextButtonsSelectionCommand = new RelayCommand(ActivateContextButtonsSelectionAction);
+ DeactivateContextButtonsHoverCommand = new RelayCommand(DeactivateContextButtonsHoverAction);
+ DeactivateContextButtonsSelectionCommand = new RelayCommand(DeactivateContextButtonsSelectionAction);
}
- public void LoadContextMenu(object sender=null)
+
+ private void ActivateContextButtonsHoverAction(object sender)
+ {
+ ActivateContextButtons(ActivationType.Hover);
+ }
+
+ private void ActivateContextButtonsSelectionAction(object sender)
+ {
+ ActivateContextButtons(ActivationType.Selection);
+ }
+ public void ActivateContextButtons(ActivationType activationType)
+ {
+
+ if (ContextMenuItems == null)
+ {
+ LoadContextMenu();
+ }
+
+ AreContextButtonsActive = true;
+
+ if (activationType == ActivationType.Selection)
+ {
+ IsSelected = true;
+ EnableContextMenuAcceleratorKeys();
+ }
+ }
+
+
+ private void DeactivateContextButtonsHoverAction(object sender)
+ {
+ DeactivateContextButtons(ActivationType.Hover);
+ }
+
+ private void DeactivateContextButtonsSelectionAction(object sender)
+ {
+ DeactivateContextButtons(ActivationType.Selection);
+ }
+
+ public void DeactivateContextButtons(ActivationType activationType)
+ {
+ AreContextButtonsActive = false;
+
+ if (activationType == ActivationType.Selection)
+ {
+ IsSelected = false;
+ DisableContextMenuAcceleratorkeys();
+ }
+ }
+
+
+ public void LoadContextMenu()
{
var results = PluginManager.GetContextMenusForPlugin(Result);
var newItems = new List();
@@ -68,19 +133,19 @@ namespace Wox.ViewModel
ContextMenuItems = newItems;
}
- internal void EnableContextMenu()
+ private void EnableContextMenuAcceleratorKeys()
{
foreach(var i in ContextMenuItems)
{
- i.IsEnabled = true;
+ i.IsAcceleratorKeyEnabled = true;
}
}
- internal void DisableContextMenu()
+ private void DisableContextMenuAcceleratorkeys()
{
foreach (var i in ContextMenuItems)
{
- i.IsEnabled = false;
+ i.IsAcceleratorKeyEnabled = false;
}
}
diff --git a/src/modules/launcher/Wox/ViewModel/ResultsViewModel.cs b/src/modules/launcher/Wox/ViewModel/ResultsViewModel.cs
index d237b0b238..c4e7360f13 100644
--- a/src/modules/launcher/Wox/ViewModel/ResultsViewModel.cs
+++ b/src/modules/launcher/Wox/ViewModel/ResultsViewModel.cs
@@ -59,14 +59,11 @@ namespace Wox.ViewModel
{
if (_selectedItem != null)
{
- _selectedItem.IsSelected = false;
- _selectedItem.DisableContextMenu();
+ _selectedItem.DeactivateContextButtons(ResultViewModel.ActivationType.Selection);
}
_selectedItem = value;
- _selectedItem.LoadContextMenu();
- _selectedItem.EnableContextMenu();
- _selectedItem.IsSelected = true;
+ _selectedItem.ActivateContextButtons(ResultViewModel.ActivationType.Selection);
}
}
}