From 6cf1d32e5a4e8c006dae257546a6e6f83894e0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pol=C3=A1=C5=A1ek?= Date: Tue, 24 Mar 2026 22:15:22 +0100 Subject: [PATCH] CmdPal: Hotfix commonCallbacks array initial count to prevent negative number (#46215) ## Summary of the Pull Request This PR ensures that requested initial capacity is not a negative number. `TopLevelCommandManager.TopLevelCommands` state is not is sync with `globalFallbacks` here, plus `globalFallbacks` includes providers that are disabled. ## PR Checklist - [x] Closes: #46210 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed --------- Co-authored-by: Zach Teutsch <88554871+zateutsch@users.noreply.github.com> Co-authored-by: Zachary Teutsch --- .../Commands/MainListPage.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Commands/MainListPage.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Commands/MainListPage.cs index 41f7283535..b5e32b70a1 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Commands/MainListPage.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Commands/MainListPage.cs @@ -365,9 +365,9 @@ public sealed partial class MainListPage : DynamicListPage, } // prefilter fallbacks - var globalFallbacks = _settingsService.Settings.GetGlobalFallbacks(); - var specialFallbacks = new List(globalFallbacks.Length); - var commonFallbacks = new List(commands.Count - globalFallbacks.Length); + var configuredGlobalFallbackIds = _settingsService.Settings.GetGlobalFallbacks(); + var specialFallbacks = new List(configuredGlobalFallbackIds.Length); + var commonFallbacks = new List(Math.Max(commands.Count - configuredGlobalFallbackIds.Length, 0)); foreach (var s in commands) { @@ -376,7 +376,7 @@ public sealed partial class MainListPage : DynamicListPage, continue; } - if (globalFallbacks.Contains(s.Id)) + if (configuredGlobalFallbackIds.Contains(s.Id)) { specialFallbacks.Add(s); } @@ -509,7 +509,7 @@ public sealed partial class MainListPage : DynamicListPage, return; } - IEnumerable newFallbacksForScoring = commands.Where(s => s.IsFallback && globalFallbacks.Contains(s.Id)); + IEnumerable newFallbacksForScoring = commands.Where(s => s.IsFallback && configuredGlobalFallbackIds.Contains(s.Id)); _scoredFallbackItems = InternalListHelpers.FilterListWithScores(newFallbacksForScoring, searchQuery, _scoringFunction); if (token.IsCancellationRequested)