Check for valid input in min/max/step fields (#1270)

This commit is contained in:
Pepe Rivera 2020-06-15 14:13:56 -07:00 committed by GitHub
parent 2104059f72
commit 4c8e1cb5f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View File

@ -9,6 +9,9 @@
namespace CalculatorApp::ViewModel namespace CalculatorApp::ViewModel
{ {
inline constexpr int DefaultMinMaxRange = 10;
public public
value struct VariableChangedEventArgs sealed value struct VariableChangedEventArgs sealed
{ {
@ -40,6 +43,12 @@ public
{ {
if (m_variable->Min != value) if (m_variable->Min != value)
{ {
if (value >= m_variable->Max)
{
m_variable->Max = value + DefaultMinMaxRange;
RaisePropertyChanged("Max");
}
m_variable->Min = value; m_variable->Min = value;
RaisePropertyChanged("Min"); RaisePropertyChanged("Min");
} }
@ -72,6 +81,12 @@ public
{ {
if (m_variable->Max != value) if (m_variable->Max != value)
{ {
if (value <= m_variable->Min)
{
m_variable->Min = value - DefaultMinMaxRange;
RaisePropertyChanged("Min");
}
m_variable->Max = value; m_variable->Max = value;
RaisePropertyChanged("Max"); RaisePropertyChanged("Max");
} }

View File

@ -402,6 +402,7 @@ void EquationInputArea::SubmitTextbox(TextBox ^ sender)
else if (sender->Name == "MinTextBox") else if (sender->Name == "MinTextBox")
{ {
val = validateDouble(sender->Text, variableViewModel->Min); val = validateDouble(sender->Text, variableViewModel->Min);
variableViewModel->Min = val; variableViewModel->Min = val;
TraceLogger::GetInstance()->LogVariableSettingsChanged(L"MinTextBox"); TraceLogger::GetInstance()->LogVariableSettingsChanged(L"MinTextBox");
} }
@ -414,6 +415,13 @@ void EquationInputArea::SubmitTextbox(TextBox ^ sender)
else if (sender->Name == "StepTextBox") else if (sender->Name == "StepTextBox")
{ {
val = validateDouble(sender->Text, variableViewModel->Step); val = validateDouble(sender->Text, variableViewModel->Step);
// Don't allow a value less than or equal to 0 as the step
if (val <= 0)
{
val = variableViewModel->Step;
}
variableViewModel->Step = val; variableViewModel->Step = val;
TraceLogger::GetInstance()->LogVariableSettingsChanged(L"StepTextBox"); TraceLogger::GetInstance()->LogVariableSettingsChanged(L"StepTextBox");
} }