From 979aa3ddff72e43bb17eb6f0f6c13ee175916ba5 Mon Sep 17 00:00:00 2001 From: Vic <10308169+VictoriousRaptor@users.noreply.github.com> Date: Tue, 27 Dec 2022 15:21:06 +0800 Subject: [PATCH] Support hotkey modifiers --- Flow.Launcher/MainWindow.xaml | 3 ++- Flow.Launcher/ViewModel/MainViewModel.cs | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index e65ac258a..433c3ec7f 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -182,7 +182,8 @@ Modifiers="Ctrl"/> + Command="{Binding TogglePreviewCommand}" + Modifiers="{Binding TogglePreviewModifiers}"/> diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 3c603f90b..f7e6318ea 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -23,6 +23,7 @@ using System.IO; using System.Collections.Specialized; using CommunityToolkit.Mvvm.Input; using System.Globalization; +using System.Windows.Input; namespace Flow.Launcher.ViewModel { @@ -74,7 +75,7 @@ namespace Flow.Launcher.ViewModel OnPropertyChanged(nameof(OpenResultCommandModifiers)); break; case nameof(Settings.PreviewHotkey): - OnPropertyChanged(nameof(TogglePreviewHotkey)); + UpdatePreviewHotkey(); break; } }; @@ -114,6 +115,7 @@ namespace Flow.Launcher.ViewModel RegisterViewUpdate(); RegisterResultsUpdatedEvent(); _ = RegisterClockAndDateUpdateAsync(); + UpdatePreviewHotkey(); } private void RegisterViewUpdate() @@ -582,7 +584,9 @@ namespace Flow.Launcher.ViewModel public string OpenResultCommandModifiers => Settings.OpenResultModifiers; - public string TogglePreviewHotkey => Settings.PreviewHotkey; // TODO: is hotkey combo possible? + public Key TogglePreviewHotkey { get; set; } + + public ModifierKeys TogglePreviewModifiers { get; set; } public string Image => Constant.QueryTextBoxIconImagePath; @@ -1014,6 +1018,14 @@ namespace Flow.Launcher.ViewModel return Settings.IgnoreHotkeysOnFullscreen && WindowsInteropHelper.IsWindowFullscreen() || GameModeStatus; } + private void UpdatePreviewHotkey() + { + var converter = new KeyGestureConverter(); + var key = (KeyGesture)converter.ConvertFromString(Settings.PreviewHotkey); + TogglePreviewHotkey = key.Key; + TogglePreviewModifiers = key.Modifiers; + } + #endregion #region Public Methods