diff --git a/src/cascadia/TerminalApp/TerminalAppLib.vcxproj b/src/cascadia/TerminalApp/TerminalAppLib.vcxproj
index 3d8a82af2a..57e801df9e 100644
--- a/src/cascadia/TerminalApp/TerminalAppLib.vcxproj
+++ b/src/cascadia/TerminalApp/TerminalAppLib.vcxproj
@@ -174,9 +174,7 @@
TerminalPaneContent.idl
-
- TerminalSettingsCache.idl
-
+
SuggestionsControl.xaml
@@ -289,9 +287,7 @@
-
- TerminalSettingsCache.idl
-
+
SuggestionsControl.xaml
@@ -366,7 +362,6 @@
TaskPaneContent.xaml
Code
-
MarkdownPaneContent.xaml
Code
diff --git a/src/cascadia/TerminalApp/TerminalAppLib.vcxproj.filters b/src/cascadia/TerminalApp/TerminalAppLib.vcxproj.filters
index d082b2a054..e15e8c8bfb 100644
--- a/src/cascadia/TerminalApp/TerminalAppLib.vcxproj.filters
+++ b/src/cascadia/TerminalApp/TerminalAppLib.vcxproj.filters
@@ -90,7 +90,6 @@
-
diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp
index 47dee8aae7..971903a0de 100644
--- a/src/cascadia/TerminalApp/TerminalPage.cpp
+++ b/src/cascadia/TerminalApp/TerminalPage.cpp
@@ -18,6 +18,7 @@
#include "SettingsPaneContent.h"
#include "SnippetsPaneContent.h"
#include "TabRowControl.h"
+#include "TerminalSettingsCache.h"
#include "../../types/inc/ColorFix.hpp"
#include "../../types/inc/utils.hpp"
@@ -240,7 +241,7 @@ namespace winrt::TerminalApp::implementation
if (_settings == nullptr)
{
// Create this only on the first time we load the settings.
- _terminalSettingsCache = TerminalApp::TerminalSettingsCache{ settings, *_bindings };
+ _terminalSettingsCache = std::make_shared(settings, *_bindings);
}
_settings = settings;
@@ -3733,7 +3734,7 @@ namespace winrt::TerminalApp::implementation
// updating terminal panes, so that we don't have to build a _new_
// TerminalSettings for every profile we update - we can just look them
// up the previous ones we built.
- _terminalSettingsCache.Reset(_settings, *_bindings);
+ _terminalSettingsCache->Reset(_settings, *_bindings);
for (const auto& tab : _tabs)
{
diff --git a/src/cascadia/TerminalApp/TerminalPage.h b/src/cascadia/TerminalApp/TerminalPage.h
index d095f008dc..dcba1d2880 100644
--- a/src/cascadia/TerminalApp/TerminalPage.h
+++ b/src/cascadia/TerminalApp/TerminalPage.h
@@ -31,6 +31,8 @@ namespace Microsoft::Terminal::Core
namespace winrt::TerminalApp::implementation
{
+ struct TerminalSettingsCache;
+
inline constexpr uint32_t DefaultRowsToScroll{ 3 };
inline constexpr std::wstring_view TabletInputServiceKey{ L"TabletInputService" };
@@ -275,7 +277,7 @@ namespace winrt::TerminalApp::implementation
TerminalApp::ContentManager _manager{ nullptr };
- TerminalApp::TerminalSettingsCache _terminalSettingsCache{ nullptr };
+ std::shared_ptr _terminalSettingsCache{};
struct StashedDragData
{
diff --git a/src/cascadia/TerminalApp/TerminalPaneContent.cpp b/src/cascadia/TerminalApp/TerminalPaneContent.cpp
index 002e4f026c..b342f6ebef 100644
--- a/src/cascadia/TerminalApp/TerminalPaneContent.cpp
+++ b/src/cascadia/TerminalApp/TerminalPaneContent.cpp
@@ -6,6 +6,7 @@
#include
+#include "TerminalSettingsCache.h"
#include "../../types/inc/utils.hpp"
#include "BellEventArgs.g.cpp"
@@ -20,7 +21,7 @@ using namespace winrt::Microsoft::Terminal::TerminalConnection;
namespace winrt::TerminalApp::implementation
{
TerminalPaneContent::TerminalPaneContent(const winrt::Microsoft::Terminal::Settings::Model::Profile& profile,
- const TerminalApp::TerminalSettingsCache& cache,
+ const std::shared_ptr& cache,
const winrt::Microsoft::Terminal::Control::TermControl& control) :
_control{ control },
_cache{ cache },
@@ -346,7 +347,7 @@ namespace winrt::TerminalApp::implementation
const auto profile{ settings.FindProfile(_profile.Guid()) };
_profile = profile ? profile : settings.ProfileDefaults();
- if (const auto& settings{ _cache.TryLookup(_profile) })
+ if (const auto& settings{ _cache->TryLookup(_profile) })
{
_control.UpdateControlSettings(settings.DefaultSettings(), settings.UnfocusedSettings());
}
diff --git a/src/cascadia/TerminalApp/TerminalPaneContent.h b/src/cascadia/TerminalApp/TerminalPaneContent.h
index aa5f4da498..0e828cdc1b 100644
--- a/src/cascadia/TerminalApp/TerminalPaneContent.h
+++ b/src/cascadia/TerminalApp/TerminalPaneContent.h
@@ -8,6 +8,8 @@
namespace winrt::TerminalApp::implementation
{
+ struct TerminalSettingsCache;
+
struct BellEventArgs : public BellEventArgsT
{
public:
@@ -20,7 +22,7 @@ namespace winrt::TerminalApp::implementation
struct TerminalPaneContent : TerminalPaneContentT, BasicPaneEvents
{
TerminalPaneContent(const winrt::Microsoft::Terminal::Settings::Model::Profile& profile,
- const TerminalApp::TerminalSettingsCache& cache,
+ const std::shared_ptr& cache,
const winrt::Microsoft::Terminal::Control::TermControl& control);
winrt::Windows::UI::Xaml::FrameworkElement GetRoot();
@@ -59,7 +61,7 @@ namespace winrt::TerminalApp::implementation
winrt::Microsoft::Terminal::Control::TermControl _control{ nullptr };
winrt::Microsoft::Terminal::TerminalConnection::ConnectionState _connectionState{ winrt::Microsoft::Terminal::TerminalConnection::ConnectionState::NotConnected };
winrt::Microsoft::Terminal::Settings::Model::Profile _profile{ nullptr };
- TerminalApp::TerminalSettingsCache _cache{ nullptr };
+ std::shared_ptr _cache{};
bool _isDefTermSession{ false };
winrt::Windows::Media::Playback::MediaPlayer _bellPlayer{ nullptr };
diff --git a/src/cascadia/TerminalApp/TerminalPaneContent.idl b/src/cascadia/TerminalApp/TerminalPaneContent.idl
index 255ddef547..53dcf4c337 100644
--- a/src/cascadia/TerminalApp/TerminalPaneContent.idl
+++ b/src/cascadia/TerminalApp/TerminalPaneContent.idl
@@ -2,7 +2,6 @@
// Licensed under the MIT license.
import "IPaneContent.idl";
-import "TerminalSettingsCache.idl";
import "FilteredCommand.idl";
namespace TerminalApp
diff --git a/src/cascadia/TerminalApp/TerminalSettingsCache.cpp b/src/cascadia/TerminalApp/TerminalSettingsCache.cpp
index c6b66169f3..3a32472eb4 100644
--- a/src/cascadia/TerminalApp/TerminalSettingsCache.cpp
+++ b/src/cascadia/TerminalApp/TerminalSettingsCache.cpp
@@ -3,7 +3,6 @@
#include "pch.h"
#include "TerminalSettingsCache.h"
-#include "TerminalSettingsCache.g.cpp"
namespace winrt
{
diff --git a/src/cascadia/TerminalApp/TerminalSettingsCache.h b/src/cascadia/TerminalApp/TerminalSettingsCache.h
index ec1cd42c65..71fb4282ae 100644
--- a/src/cascadia/TerminalApp/TerminalSettingsCache.h
+++ b/src/cascadia/TerminalApp/TerminalSettingsCache.h
@@ -13,14 +13,13 @@ Abstract:
--*/
#pragma once
-#include "TerminalSettingsCache.g.h"
-#include
+#include "winrt/Microsoft.Terminal.Settings.Model.h"
+#include "winrt/TerminalApp.h"
namespace winrt::TerminalApp::implementation
{
- class TerminalSettingsCache : public TerminalSettingsCacheT
+ struct TerminalSettingsCache
{
- public:
TerminalSettingsCache(const Microsoft::Terminal::Settings::Model::CascadiaSettings& settings, const TerminalApp::AppKeyBindings& bindings);
Microsoft::Terminal::Settings::Model::TerminalSettingsCreateResult TryLookup(const Microsoft::Terminal::Settings::Model::Profile& profile);
void Reset(const Microsoft::Terminal::Settings::Model::CascadiaSettings& settings, const TerminalApp::AppKeyBindings& bindings);
@@ -31,8 +30,3 @@ namespace winrt::TerminalApp::implementation
std::unordered_map> profileGuidSettingsMap;
};
}
-
-namespace winrt::TerminalApp::factory_implementation
-{
- BASIC_FACTORY(TerminalSettingsCache);
-}
diff --git a/src/cascadia/TerminalApp/TerminalSettingsCache.idl b/src/cascadia/TerminalApp/TerminalSettingsCache.idl
deleted file mode 100644
index 24d766c187..0000000000
--- a/src/cascadia/TerminalApp/TerminalSettingsCache.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-import "AppKeyBindings.idl";
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-namespace TerminalApp
-{
- [default_interface] runtimeclass TerminalSettingsCache
- {
- TerminalSettingsCache(Microsoft.Terminal.Settings.Model.CascadiaSettings settings, AppKeyBindings bindings);
- Microsoft.Terminal.Settings.Model.TerminalSettingsCreateResult TryLookup(Microsoft.Terminal.Settings.Model.Profile profile);
- void Reset(Microsoft.Terminal.Settings.Model.CascadiaSettings settings, AppKeyBindings bindings);
- }
-}