From 0b21087c77bf15b8accfb3921c87b946747b8bc8 Mon Sep 17 00:00:00 2001 From: KrisVandermotten Date: Sun, 17 May 2026 16:52:46 +0200 Subject: [PATCH] Fix UpdateCommandPaletteSuggestions --- .../NavigationToolbarViewModel.cs | 42 +++++-------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs index 901f23a0f0c1..f8602f5209f5 100644 --- a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs +++ b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs @@ -5,7 +5,6 @@ using Files.App.Controls; using Files.App.ViewModels.Settings; using Files.Shared.Helpers; -using Microsoft.Extensions.Logging; using Microsoft.UI.Dispatching; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; @@ -1030,12 +1029,12 @@ public async Task PopulateOmnibarSuggestionsForPathMode() void AddNoResultsItem() { PathModeSuggestionItems.Clear(); - + // Use null-safe access to avoid NullReferenceException during app lifecycle transitions var workingDirectory = string.IsNullOrEmpty(ContentPageContext.ShellPage?.ShellViewModel?.WorkingDirectory) ? Constants.UserEnvironmentPaths.HomePath : ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory; - + PathModeSuggestionItems.Add(new( workingDirectory, Strings.NavigationToolbarVisiblePathNoResults.GetLocalizedResource())); @@ -1062,7 +1061,7 @@ public async Task PopulateOmnibarSuggestionsForCommandPaletteMode() int processedCount = 0; foreach (var command in commandsToProcess) - { + { if (!command.IsExecutable) { processedCount++; @@ -1104,37 +1103,16 @@ private void UpdateCommandPaletteSuggestions(List n }); } - if (!OmnibarCommandPaletteModeSuggestionItems.IntersectBy(newSuggestions, x => x.PrimaryDisplay).Any()) + for (int index = 0; index < newSuggestions.Count; index++) { - for (int index = 0; index < newSuggestions.Count; index++) - { - if (index < OmnibarCommandPaletteModeSuggestionItems.Count) - OmnibarCommandPaletteModeSuggestionItems[index] = newSuggestions[index]; - else - OmnibarCommandPaletteModeSuggestionItems.Add(newSuggestions[index]); - } - - while (OmnibarCommandPaletteModeSuggestionItems.Count > newSuggestions.Count) - OmnibarCommandPaletteModeSuggestionItems.RemoveAt(OmnibarCommandPaletteModeSuggestionItems.Count - 1); + if (index < OmnibarCommandPaletteModeSuggestionItems.Count) + OmnibarCommandPaletteModeSuggestionItems[index] = newSuggestions[index]; + else + OmnibarCommandPaletteModeSuggestionItems.Add(newSuggestions[index]); } - else - { - foreach (var s in OmnibarCommandPaletteModeSuggestionItems.ExceptBy(newSuggestions, x => x.PrimaryDisplay).ToList()) - OmnibarCommandPaletteModeSuggestionItems.Remove(s); - for (int index = 0; index < newSuggestions.Count; index++) - { - if (OmnibarCommandPaletteModeSuggestionItems.Count > index - && OmnibarCommandPaletteModeSuggestionItems[index].PrimaryDisplay == newSuggestions[index].PrimaryDisplay) - { - OmnibarCommandPaletteModeSuggestionItems[index] = newSuggestions[index]; - } - else - { - OmnibarCommandPaletteModeSuggestionItems.Insert(index, newSuggestions[index]); - } - } - } + while (OmnibarCommandPaletteModeSuggestionItems.Count > newSuggestions.Count) + OmnibarCommandPaletteModeSuggestionItems.RemoveAt(OmnibarCommandPaletteModeSuggestionItems.Count - 1); } public async Task PopulateOmnibarSuggestionsForSearchMode()