From 4c8e1cb5f0ca1cd494c107be6df6c74b2b6b0eda Mon Sep 17 00:00:00 2001 From: Pepe Rivera Date: Mon, 15 Jun 2020 14:13:56 -0700 Subject: [PATCH] Check for valid input in min/max/step fields (#1270) --- .../GraphingCalculator/VariableViewModel.h | 15 +++++++++++++++ .../GraphingCalculator/EquationInputArea.xaml.cpp | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/src/CalcViewModel/GraphingCalculator/VariableViewModel.h b/src/CalcViewModel/GraphingCalculator/VariableViewModel.h index cd5ffce..151499e 100644 --- a/src/CalcViewModel/GraphingCalculator/VariableViewModel.h +++ b/src/CalcViewModel/GraphingCalculator/VariableViewModel.h @@ -9,6 +9,9 @@ namespace CalculatorApp::ViewModel { + +inline constexpr int DefaultMinMaxRange = 10; + public value struct VariableChangedEventArgs sealed { @@ -40,6 +43,12 @@ public { if (m_variable->Min != value) { + if (value >= m_variable->Max) + { + m_variable->Max = value + DefaultMinMaxRange; + RaisePropertyChanged("Max"); + } + m_variable->Min = value; RaisePropertyChanged("Min"); } @@ -72,6 +81,12 @@ public { if (m_variable->Max != value) { + if (value <= m_variable->Min) + { + m_variable->Min = value - DefaultMinMaxRange; + RaisePropertyChanged("Min"); + } + m_variable->Max = value; RaisePropertyChanged("Max"); } diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp index 37dd900..3d3650c 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp @@ -402,6 +402,7 @@ void EquationInputArea::SubmitTextbox(TextBox ^ sender) else if (sender->Name == "MinTextBox") { val = validateDouble(sender->Text, variableViewModel->Min); + variableViewModel->Min = val; TraceLogger::GetInstance()->LogVariableSettingsChanged(L"MinTextBox"); } @@ -414,6 +415,13 @@ void EquationInputArea::SubmitTextbox(TextBox ^ sender) else if (sender->Name == "StepTextBox") { 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; TraceLogger::GetInstance()->LogVariableSettingsChanged(L"StepTextBox"); }