@@ -150,6 +150,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
150
150
Automation::AutomationProperties::SetHelpText (OpenJsonNavItem (), RS_ (L" Nav_OpenJSON/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip" ));
151
151
152
152
_breadcrumbs = single_threaded_observable_vector<IInspectable>();
153
+ _breadcrumbs.VectorChanged ({ this , &MainPage::_OnBreadcrumbsChange });
153
154
}
154
155
155
156
// Method Description:
@@ -683,33 +684,55 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
683
684
_settingsClone.WriteSettingsToDisk ();
684
685
}
685
686
687
+ void MainPage::BackButton_Click (winrt::Microsoft::UI::Xaml::Controls::NavigationView const & /* args*/ , winrt::Microsoft::UI::Xaml::Controls::NavigationViewBackRequestedEventArgs const & /* sender*/ )
688
+ {
689
+ if (_breadcrumbs.Size () < 2 )
690
+ {
691
+ return ;
692
+ }
693
+ const auto previousBreadcrumb = _breadcrumbs.GetAt (_breadcrumbs.Size () - 2 ).try_as <Breadcrumb>();
694
+ _NavigatePreviousPageForBreadcrumb (previousBreadcrumb);
695
+ }
696
+
686
697
void MainPage::ResetButton_Click (const IInspectable& /* sender*/ , const RoutedEventArgs& /* args*/ )
687
698
{
688
699
UpdateSettings (_settingsSource);
689
700
}
690
701
702
+ void MainPage::_NavigatePreviousPageForBreadcrumb (const winrt::impl::com_ref<Breadcrumb>& breadcrumb)
703
+ {
704
+ const auto tag = breadcrumb->Tag ();
705
+ const auto subPage = breadcrumb->SubPage ();
706
+ if (const auto profileViewModel = tag.try_as <ProfileViewModel>())
707
+ {
708
+ _Navigate (*profileViewModel, subPage);
709
+ }
710
+ else if (const auto ntmEntryViewModel = tag.try_as <NewTabMenuEntryViewModel>())
711
+ {
712
+ _Navigate (*ntmEntryViewModel, subPage);
713
+ }
714
+ else if (const auto extPkgViewModel = tag.try_as <ExtensionPackageViewModel>())
715
+ {
716
+ _Navigate (*extPkgViewModel, subPage);
717
+ }
718
+ else
719
+ {
720
+ _Navigate (tag.as <hstring>(), subPage);
721
+ }
722
+ }
723
+
724
+ void MainPage::_OnBreadcrumbsChange (IObservableVector<winrt::Windows::Foundation::IInspectable> const & vect, IVectorChangedEventArgs const & /* args*/ )
725
+ {
726
+ const auto settingsNav = SettingsNav ();
727
+ settingsNav.IsBackButtonVisible (vect.Size () > 1 ? winrt::Microsoft::UI::Xaml::Controls::NavigationViewBackButtonVisible::Visible : winrt::Microsoft::UI::Xaml::Controls::NavigationViewBackButtonVisible::Collapsed);
728
+ settingsNav.IsBackEnabled (vect.Size () > 1 ? true : false );
729
+ }
730
+
691
731
void MainPage::BreadcrumbBar_ItemClicked (const Microsoft::UI::Xaml::Controls::BreadcrumbBar& /* sender*/ , const Microsoft::UI::Xaml::Controls::BreadcrumbBarItemClickedEventArgs& args)
692
732
{
693
733
if (gsl::narrow_cast<uint32_t >(args.Index ()) < (_breadcrumbs.Size () - 1 ))
694
734
{
695
- const auto tag = args.Item ().as <Breadcrumb>()->Tag ();
696
- const auto subPage = args.Item ().as <Breadcrumb>()->SubPage ();
697
- if (const auto profileViewModel = tag.try_as <ProfileViewModel>())
698
- {
699
- _Navigate (*profileViewModel, subPage);
700
- }
701
- else if (const auto ntmEntryViewModel = tag.try_as <NewTabMenuEntryViewModel>())
702
- {
703
- _Navigate (*ntmEntryViewModel, subPage);
704
- }
705
- else if (const auto extPkgViewModel = tag.try_as <ExtensionPackageViewModel>())
706
- {
707
- _Navigate (*extPkgViewModel, subPage);
708
- }
709
- else
710
- {
711
- _Navigate (tag.as <hstring>(), subPage);
712
- }
735
+ _NavigatePreviousPageForBreadcrumb (args.Item ().as <Breadcrumb>());
713
736
}
714
737
}
715
738
0 commit comments