[Settings][PTRun]Fix crash on empty additional options number box (#32832)

* add NaN check to PluginOption ViewModel

* fix spelling

* fix spelling

* Update PluginAdditionalOptionViewModel.cs
This commit is contained in:
Heiko 2024-05-13 17:41:07 +02:00 committed by GitHub
parent fd6de9a0da
commit ee91e4dcc2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -105,7 +105,15 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
get => _additionalOption.NumberValue;
set
{
if (value != _additionalOption.NumberValue)
if (double.IsNaN(value))
{
// If the user clears the NumberBox and presses enter or moves focus away then `value` converted to double results in `double.NaN`. This crashes the settings app. (https://github.com/microsoft/PowerToys/issues/32738#issuecomment-2105983967)
// To prevent the crash and provide a nice user experience we reset the NumberBox to the last valid value. This happens by sending a `NotifyPropertyChanged()` command and let the NumberBox reload its value.
// (Yes we could use 0, but this needs additional code for checking 0 against min and max.
// And yes we could also use the min value of the NumberBox, but this is not user friendly as the minimum value of NumberBox can be `double.MinValue`.)
NotifyPropertyChanged();
}
else if (value != _additionalOption.NumberValue)
{
_additionalOption.NumberValue = value;
NotifyPropertyChanged();