From 258833f26664bdef8599dd6e0d723a6c84b88ecf Mon Sep 17 00:00:00 2001 From: Pepe Rivera Date: Thu, 6 Aug 2020 12:28:38 -0700 Subject: [PATCH] Skip items that are not enabled when creating jump list (#1333) * Fix jumplist bug * Add extra check --- src/CalcViewModel/ApplicationViewModel.cpp | 2 +- src/CalcViewModel/Common/NavCategory.cpp | 8 ++++++++ src/CalcViewModel/Common/NavCategory.h | 1 + src/Calculator/App.xaml.cpp | 4 ++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/CalcViewModel/ApplicationViewModel.cpp b/src/CalcViewModel/ApplicationViewModel.cpp index ee5f2fbb..46855071 100644 --- a/src/CalcViewModel/ApplicationViewModel.cpp +++ b/src/CalcViewModel/ApplicationViewModel.cpp @@ -75,7 +75,7 @@ void ApplicationViewModel::Categories::set(IObservableVector void ApplicationViewModel::Initialize(ViewMode mode) { - if (!NavCategory::IsValidViewMode(mode)) + if (!NavCategory::IsValidViewMode(mode) || !NavCategory::IsViewModeEnabled(mode)) { mode = ViewMode::Standard; } diff --git a/src/CalcViewModel/Common/NavCategory.cpp b/src/CalcViewModel/Common/NavCategory.cpp index d5769aef..7c89c6a4 100644 --- a/src/CalcViewModel/Common/NavCategory.cpp +++ b/src/CalcViewModel/Common/NavCategory.cpp @@ -350,6 +350,14 @@ bool NavCategory::IsValidViewMode(ViewMode mode) return iter != s_categoryManifest.end(); } +bool NavCategory::IsViewModeEnabled(ViewMode mode) +{ + auto iter = + find_if(begin(s_categoryManifest), end(s_categoryManifest), [mode](const NavCategoryInitializer& initializer) { return initializer.viewMode == mode && initializer.isEnabled; }); + + return iter != s_categoryManifest.end(); +} + bool NavCategory::IsCalculatorViewMode(ViewMode mode) { // Historically, Calculator modes are Standard, Scientific, and Programmer. diff --git a/src/CalcViewModel/Common/NavCategory.h b/src/CalcViewModel/Common/NavCategory.h index a2edc995..b7c46057 100644 --- a/src/CalcViewModel/Common/NavCategory.h +++ b/src/CalcViewModel/Common/NavCategory.h @@ -134,6 +134,7 @@ namespace CalculatorApp static ViewMode GetViewModeForFriendlyName(Platform::String ^ name); static bool IsValidViewMode(ViewMode mode); + static bool IsViewModeEnabled(ViewMode mode); static bool IsCalculatorViewMode(ViewMode mode); static bool IsGraphingCalculatorViewMode(ViewMode mode); static bool IsDateCalculatorViewMode(ViewMode mode); diff --git a/src/Calculator/App.xaml.cpp b/src/Calculator/App.xaml.cpp index 2936680d..b8f7702d 100644 --- a/src/Calculator/App.xaml.cpp +++ b/src/Calculator/App.xaml.cpp @@ -148,6 +148,10 @@ task App::SetupJumpList() for (NavCategory ^ option : calculatorOptions->Categories) { + if (!option->IsEnabled) + { + continue; + } ViewMode mode = option->Mode; auto item = JumpListItem::CreateWithArguments(((int)mode).ToString(), L"ms-resource:///Resources/" + NavCategory::GetNameResourceKey(mode)); item->Description = L"ms-resource:///Resources/" + NavCategory::GetNameResourceKey(mode);