From a0d2f84513bc2d36fea3d75445782e1c67bc2e8d Mon Sep 17 00:00:00 2001 From: Lee-WonJun Date: Wed, 5 Aug 2020 22:07:53 +0900 Subject: [PATCH] Reset Calculator Type in Calculator ViewModel when mode change to not Calculator mode --- src/CalcViewModel/ApplicationViewModel.cpp | 8 ++++++++ src/CalcViewModel/StandardCalculatorViewModel.cpp | 6 ++++++ 2 files changed, 14 insertions(+) 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(); } }