diff --git a/src/CalcViewModel/ApplicationViewModel.cpp b/src/CalcViewModel/ApplicationViewModel.cpp index ee5f2fbb..1f14a55c 100644 --- a/src/CalcViewModel/ApplicationViewModel.cpp +++ b/src/CalcViewModel/ApplicationViewModel.cpp @@ -125,6 +125,14 @@ bool ApplicationViewModel::TryRecoverFromNavigationModeFailure() void ApplicationViewModel::OnModeChanged() { assert(NavCategory::IsValidViewMode(m_mode)); + if (NavCategory::IsValidViewMode(m_PreviousMode) && NavCategory::IsCalculatorViewMode(m_PreviousMode) && !NavCategory::IsCalculatorViewMode(m_mode)) + { + if (m_CalculatorViewModel) + { + m_CalculatorViewModel->SetCalculatorType(m_mode); + } + } + if (NavCategory::IsCalculatorViewMode(m_mode)) { if (!m_CalculatorViewModel) diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index a148fe31..dd3bfef6 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -1205,6 +1205,12 @@ void StandardCalculatorViewModel::SetCalculatorType(ViewMode targetState) ResetDisplay(); SetPrecision(ProgrammerModePrecision); break; + + default: + IsStandard = false; + IsScientific = false; + IsProgrammer = false; + ResetDisplay(); } }