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.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #46210
<!-- - [ ] Closes: #yyy (add separate lines for additional resolved
issues) -->
- [ ] **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

<!-- Provide a more detailed description of the PR, other things fixed,
or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Zach Teutsch <88554871+zateutsch@users.noreply.github.com>
Co-authored-by: Zachary Teutsch <zteutsch@microsoft.com>
This commit is contained in:
Jiří Polášek
2026-03-24 22:15:22 +01:00
committed by GitHub
parent 33497e59cc
commit 6cf1d32e5a

View File

@@ -365,9 +365,9 @@ public sealed partial class MainListPage : DynamicListPage,
} }
// prefilter fallbacks // prefilter fallbacks
var globalFallbacks = _settingsService.Settings.GetGlobalFallbacks(); var configuredGlobalFallbackIds = _settingsService.Settings.GetGlobalFallbacks();
var specialFallbacks = new List<TopLevelViewModel>(globalFallbacks.Length); var specialFallbacks = new List<TopLevelViewModel>(configuredGlobalFallbackIds.Length);
var commonFallbacks = new List<TopLevelViewModel>(commands.Count - globalFallbacks.Length); var commonFallbacks = new List<TopLevelViewModel>(Math.Max(commands.Count - configuredGlobalFallbackIds.Length, 0));
foreach (var s in commands) foreach (var s in commands)
{ {
@@ -376,7 +376,7 @@ public sealed partial class MainListPage : DynamicListPage,
continue; continue;
} }
if (globalFallbacks.Contains(s.Id)) if (configuredGlobalFallbackIds.Contains(s.Id))
{ {
specialFallbacks.Add(s); specialFallbacks.Add(s);
} }
@@ -509,7 +509,7 @@ public sealed partial class MainListPage : DynamicListPage,
return; return;
} }
IEnumerable<IListItem> newFallbacksForScoring = commands.Where(s => s.IsFallback && globalFallbacks.Contains(s.Id)); IEnumerable<IListItem> newFallbacksForScoring = commands.Where(s => s.IsFallback && configuredGlobalFallbackIds.Contains(s.Id));
_scoredFallbackItems = InternalListHelpers.FilterListWithScores(newFallbacksForScoring, searchQuery, _scoringFunction); _scoredFallbackItems = InternalListHelpers.FilterListWithScores(newFallbacksForScoring, searchQuery, _scoringFunction);
if (token.IsCancellationRequested) if (token.IsCancellationRequested)