CmdPal: Fix SUI crash ; Allow extensions to be disabled (#38040)

Both `TopLevelCommandItemWrapper` and `TopLevelViewModel` were really the same thing. The latter was from an earlier prototype, and the former is a more correct, safer abstraction. We really should have only ever used the former, but alas, we only used it for the SUI, and it piggy-backed off the latter, and that meant the latter's bugs became the former's.


tldr: I made the icon access safe in the SUI. 

And while I was doing this, because we now have a cleaner VM abstraction here in the host, we can actually cleanly disable extensions, because the `CommandProviderWrapper` knows which `ViewModel`s it made. 

Closes https://github.com/zadjii-msft/PowerToys/issues/426
Closes https://github.com/zadjii-msft/PowerToys/issues/478
Closes https://github.com/zadjii-msft/PowerToys/issues/577
This commit is contained in:
Mike Griese
2025-03-20 15:36:10 -05:00
committed by GitHub
parent 57cbcc2c3e
commit 14919dff10
34 changed files with 590 additions and 528 deletions

View File

@@ -303,6 +303,15 @@ namespace Microsoft.CmdPal.UI.ViewModels.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Disabled.
/// </summary>
public static string builtin_disabled_extension {
get {
return ResourceManager.GetString("builtin_disabled_extension", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Built-in commands.
/// </summary>

View File

@@ -236,4 +236,7 @@
<data name="builtin_reload_display_title" xml:space="preserve">
<value>Reload Command Palette extensions</value>
</data>
<data name="builtin_disabled_extension" xml:space="preserve">
<value>Disabled</value>
</data>
</root>