diff --git a/src/cascadia/TerminalApp/SettingsTab.cpp b/src/cascadia/TerminalApp/SettingsTab.cpp index dd78edabf98..46a74ac703b 100644 --- a/src/cascadia/TerminalApp/SettingsTab.cpp +++ b/src/cascadia/TerminalApp/SettingsTab.cpp @@ -12,6 +12,7 @@ using namespace winrt::Windows::UI::Xaml; using namespace winrt::Windows::UI::Core; using namespace winrt::Microsoft::Terminal::TerminalControl; using namespace winrt::Microsoft::Terminal::Settings::Model; +using namespace winrt::Microsoft::Terminal::Settings::Editor; using namespace winrt::Windows::System; namespace winrt @@ -22,7 +23,7 @@ namespace winrt namespace winrt::TerminalApp::implementation { - SettingsTab::SettingsTab(winrt::Microsoft::Terminal::Settings::Editor::MainPage settingsUI) + SettingsTab::SettingsTab(MainPage settingsUI) { Content(settingsUI); @@ -31,6 +32,12 @@ namespace winrt::TerminalApp::implementation _CreateIcon(); } + void SettingsTab::UpdateSettings(CascadiaSettings settings) + { + auto settingsUI{ Content().as() }; + settingsUI.UpdateSettings(settings); + } + // Method Description: // - Focus the settings UI // Arguments: diff --git a/src/cascadia/TerminalApp/SettingsTab.h b/src/cascadia/TerminalApp/SettingsTab.h index 28399b426a8..1c83fc243ba 100644 --- a/src/cascadia/TerminalApp/SettingsTab.h +++ b/src/cascadia/TerminalApp/SettingsTab.h @@ -29,6 +29,7 @@ namespace winrt::TerminalApp::implementation public: SettingsTab(winrt::Microsoft::Terminal::Settings::Editor::MainPage settingsUI); + void UpdateSettings(Microsoft::Terminal::Settings::Model::CascadiaSettings settings); void Focus(winrt::Windows::UI::Xaml::FocusState focusState) override; private: diff --git a/src/cascadia/TerminalApp/SettingsTab.idl b/src/cascadia/TerminalApp/SettingsTab.idl index 38d53e7b64e..deb45d4f155 100644 --- a/src/cascadia/TerminalApp/SettingsTab.idl +++ b/src/cascadia/TerminalApp/SettingsTab.idl @@ -7,5 +7,6 @@ namespace TerminalApp { [default_interface] runtimeclass SettingsTab : TabBase { + void UpdateSettings(Microsoft.Terminal.Settings.Model.CascadiaSettings settings); } } diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 176b55f9c80..0de3bc496a7 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -2250,6 +2250,11 @@ namespace winrt::TerminalApp::implementation // Force the TerminalTab to re-grab its currently active control's title. terminalTab->UpdateTitle(); } + + if (auto settingsTab = tab.try_as()) + { + settingsTab.UpdateSettings(_settings); + } } auto weakThis{ get_weak() }; diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.cpp b/src/cascadia/TerminalSettingsEditor/MainPage.cpp index 88a422d0c22..1c69caf90dd 100644 --- a/src/cascadia/TerminalSettingsEditor/MainPage.cpp +++ b/src/cascadia/TerminalSettingsEditor/MainPage.cpp @@ -47,6 +47,12 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation _InitializeProfilesList(); } + void MainPage::UpdateSettings(Model::CascadiaSettings settings) + { + _settingsSource = settings; + _settingsClone = settings.Copy(); + } + // Function Description: // - Called when the NavigationView is loaded. Navigates to the first item in the NavigationView, if no item is selected // Arguments: diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.h b/src/cascadia/TerminalSettingsEditor/MainPage.h index ff61a233b54..e3bdc1d93d1 100644 --- a/src/cascadia/TerminalSettingsEditor/MainPage.h +++ b/src/cascadia/TerminalSettingsEditor/MainPage.h @@ -13,6 +13,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation MainPage() = delete; MainPage(const Model::CascadiaSettings& settings); + void UpdateSettings(Model::CascadiaSettings settings); + void OpenJsonKeyDown(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs const& args); void OpenJsonTapped(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs const& args); void SettingsNav_Loaded(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); @@ -20,16 +22,16 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation void SaveButton_Click(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void ResetButton_Click(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); - TYPED_EVENT(OpenJson, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Settings::Model::SettingsTarget); + TYPED_EVENT(OpenJson, winrt::Windows::Foundation::IInspectable, Model::SettingsTarget); private: - winrt::Microsoft::Terminal::Settings::Model::CascadiaSettings _settingsSource; - winrt::Microsoft::Terminal::Settings::Model::CascadiaSettings _settingsClone; - winrt::Windows::Foundation::Collections::IMap _profileToNavItemMap; + Model::CascadiaSettings _settingsSource; + Model::CascadiaSettings _settingsClone; + winrt::Windows::Foundation::Collections::IMap _profileToNavItemMap; void _InitializeProfilesList(); void _CreateAndNavigateToNewProfile(const uint32_t index); - winrt::Microsoft::UI::Xaml::Controls::NavigationViewItem _CreateProfileNavViewItem(const winrt::Microsoft::Terminal::Settings::Model::Profile& profile); + winrt::Microsoft::UI::Xaml::Controls::NavigationViewItem _CreateProfileNavViewItem(const Model::Profile& profile); void _Navigate(hstring clickedItemTag); }; diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.idl b/src/cascadia/TerminalSettingsEditor/MainPage.idl index 28ac5f565bb..d3d74def259 100644 --- a/src/cascadia/TerminalSettingsEditor/MainPage.idl +++ b/src/cascadia/TerminalSettingsEditor/MainPage.idl @@ -7,6 +7,7 @@ namespace Microsoft.Terminal.Settings.Editor { MainPage(Microsoft.Terminal.Settings.Model.CascadiaSettings settings); + void UpdateSettings(Microsoft.Terminal.Settings.Model.CascadiaSettings settings); event Windows.Foundation.TypedEventHandler OpenJson; } }