diff --git a/src/Files.App/UserControls/NavigationToolbar.xaml.cs b/src/Files.App/UserControls/NavigationToolbar.xaml.cs index c0b5ca5d328c..900d19f769d6 100644 --- a/src/Files.App/UserControls/NavigationToolbar.xaml.cs +++ b/src/Files.App/UserControls/NavigationToolbar.xaml.cs @@ -258,32 +258,38 @@ private void ClickablePath_GettingFocus(UIElement sender, GettingFocusEventArgs private async void Omnibar_QuerySubmitted(Omnibar sender, OmnibarQuerySubmittedEventArgs args) { - if (Omnibar.CurrentSelectedMode == OmnibarPathMode) + var mode = Omnibar.CurrentSelectedMode; + + // Path mode + if (mode == OmnibarPathMode) { await ViewModel.HandleItemNavigationAsync(args.Text); (MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic); + return; } - else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode) + + // Command palette mode + else if (mode == OmnibarCommandPaletteMode) { - if (args.Item is not NavigationBarSuggestionItem item) - return; + var item = args.Item as NavigationBarSuggestionItem; // Try invoking built-in command - if (item.Text is { } commandText) + foreach (var command in Commands) { - var command = Commands[commandText]; if (command == Commands.None) - await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidCommand.GetLocalizedResource(), - string.Format(Strings.InvalidCommandContent.GetLocalizedResource(), commandText)); - else if (!command.IsExecutable) - await DialogDisplayHelper.ShowDialogAsync(Strings.CommandNotExecutable.GetLocalizedResource(), - string.Format(Strings.CommandNotExecutableContent.GetLocalizedResource(), command.Code)); - else - await command.ExecuteAsync(); + continue; + + if (!string.Equals(command.Description, item?.Text, StringComparison.OrdinalIgnoreCase) && + !string.Equals(command.Description, args.Text, StringComparison.OrdinalIgnoreCase)) + continue; + + await command.ExecuteAsync(); + (MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic); + return; } // Try invoking Windows app action - else if (ActionManager.Instance.ActionRuntime is not null && item.ActionInstance is ActionInstance actionInstance) + if (ActionManager.Instance.ActionRuntime is not null && item?.ActionInstance is ActionInstance actionInstance) { // Workaround for https://github.com/microsoft/App-Actions-On-Windows-Samples/issues/7 var action = ActionManager.Instance.ActionRuntime.ActionCatalog.GetAllActions() @@ -294,11 +300,20 @@ await DialogDisplayHelper.ShowDialogAsync(Strings.CommandNotExecutable.GetLocali var overload = action.GetOverloads().FirstOrDefault(); await overload?.InvokeAsync(actionInstance.Context); } + + (MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic); + return; } + await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidCommand.GetLocalizedResource(), + string.Format(Strings.InvalidCommandContent.GetLocalizedResource(), args.Text)); + (MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic); + return; } - else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode) + + // Search mode + else if (mode == OmnibarSearchMode) { } } diff --git a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs index 7aad2035dddd..eb6d1590cdde 100644 --- a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs +++ b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs @@ -1254,7 +1254,7 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode() { ThemedIconStyle = command.Glyph.ToThemedIconStyle(), Glyph = command.Glyph.BaseGlyph, - Text = command.Code.ToString(), + Text = command.Description, PrimaryDisplay = command.Description, HotKeys = command.HotKeys, SearchText = OmnibarCommandPaletteModeText, @@ -1262,7 +1262,7 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode() foreach (var item in suggestionItems) { - if (item.Text != Commands.OpenCommandPalette.Code.ToString()) + if (item.Text != Commands.OpenCommandPalette.Description.ToString()) OmnibarCommandPaletteModeSuggestionItems.Add(item); }