Skip to content

Commit f7971af

Browse files
committed
Theme for settings
Updated with JSON entries. Update _UpdateBackgroundForMica
1 parent f5b45c2 commit f7971af

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

src/cascadia/TerminalSettingsEditor/MainPage.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -703,12 +703,16 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
703703
{
704704
return;
705705
}
706-
707706
const auto& theme = _settingsSource.GlobalSettings().CurrentTheme();
708-
const auto& requestedTheme = _settingsSource.GlobalSettings().CurrentTheme().RequestedTheme();
707+
const auto& requestedTheme = (theme.Settings() != nullptr) ? theme.Settings().RequestedTheme() : theme.RequestedTheme();
709708

710709
RequestedTheme(requestedTheme);
711710

711+
if (!isMicaAvailable)
712+
{
713+
return;
714+
}
715+
712716
const auto bgKey = (theme.Window() != nullptr && theme.Window().UseMica()) ?
713717
L"SettingsPageMicaBackground" :
714718
L"SettingsPageBackground";

src/cascadia/TerminalSettingsModel/MTSMSettings.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,10 @@ Author(s):
135135
// * ForegroundKey, BackgroundKey, SelectionBackgroundKey, CursorColorKey: all optional colors
136136
// * Opacity: needs special parsing
137137

138-
#define MTSM_THEME_SETTINGS(X) \
139-
X(winrt::Microsoft::Terminal::Settings::Model::WindowTheme, Window, "window", nullptr) \
140-
X(winrt::Microsoft::Terminal::Settings::Model::TabRowTheme, TabRow, "tabRow", nullptr) \
138+
#define MTSM_THEME_SETTINGS(X) \
139+
X(winrt::Microsoft::Terminal::Settings::Model::WindowTheme, Window, "window", nullptr) \
140+
X(winrt::Microsoft::Terminal::Settings::Model::SettingsTheme, Settings, "settings", nullptr) \
141+
X(winrt::Microsoft::Terminal::Settings::Model::TabRowTheme, TabRow, "tabRow", nullptr) \
141142
X(winrt::Microsoft::Terminal::Settings::Model::TabTheme, Tab, "tab", nullptr)
142143

143144
#define MTSM_THEME_WINDOW_SETTINGS(X) \
@@ -147,6 +148,9 @@ Author(s):
147148
X(bool, RainbowFrame, "experimental.rainbowFrame", false) \
148149
X(bool, UseMica, "useMica", false)
149150

151+
#define MTSM_THEME_SETTINGS_SETTINGS(X) \
152+
X(winrt::Windows::UI::Xaml::ElementTheme, RequestedTheme, "theme", winrt::Windows::UI::Xaml::ElementTheme::Default)
153+
150154
#define MTSM_THEME_TABROW_SETTINGS(X) \
151155
X(winrt::Microsoft::Terminal::Settings::Model::ThemeColor, Background, "background", nullptr) \
152156
X(winrt::Microsoft::Terminal::Settings::Model::ThemeColor, UnfocusedBackground, "unfocusedBackground", nullptr)

src/cascadia/TerminalSettingsModel/Theme.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "JsonUtils.h"
1010
#include "TerminalSettingsSerializationHelpers.h"
1111

12+
#include "SettingsTheme.g.h"
1213
#include "ThemeColor.g.cpp"
1314
#include "WindowTheme.g.cpp"
1415
#include "TabRowTheme.g.cpp"
@@ -56,6 +57,7 @@ static constexpr wchar_t RegKeyAccentColor[] = L"AccentColor";
5657
}
5758

5859
THEME_OBJECT(WindowTheme, MTSM_THEME_WINDOW_SETTINGS);
60+
THEME_OBJECT(SettingsTheme, MTSM_THEME_SETTINGS_SETTINGS);
5961
THEME_OBJECT(TabRowTheme, MTSM_THEME_TABROW_SETTINGS);
6062
THEME_OBJECT(TabTheme, MTSM_THEME_TAB_SETTINGS);
6163

@@ -219,6 +221,7 @@ uint8_t ThemeColor::UnfocusedTabOpacity() const noexcept
219221
};
220222

221223
THEME_OBJECT_CONVERTER(winrt::Microsoft::Terminal::Settings::Model, WindowTheme, MTSM_THEME_WINDOW_SETTINGS);
224+
THEME_OBJECT_CONVERTER(winrt::Microsoft::Terminal::Settings::Model, SettingsTheme, MTSM_THEME_SETTINGS_SETTINGS);
222225
THEME_OBJECT_CONVERTER(winrt::Microsoft::Terminal::Settings::Model, TabRowTheme, MTSM_THEME_TABROW_SETTINGS);
223226
THEME_OBJECT_CONVERTER(winrt::Microsoft::Terminal::Settings::Model, TabTheme, MTSM_THEME_TAB_SETTINGS);
224227

@@ -251,6 +254,10 @@ winrt::com_ptr<Theme> Theme::Copy() const
251254
{
252255
theme->_Tab = *winrt::get_self<implementation::TabTheme>(_Tab)->Copy();
253256
}
257+
if (_Settings)
258+
{
259+
theme->_Settings = *winrt::get_self<implementation::SettingsTheme>(_Settings)->Copy();
260+
}
254261

255262
return theme;
256263
}

src/cascadia/TerminalSettingsModel/Theme.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Author(s):
1818

1919
#include "MTSMSettings.h"
2020

21+
#include "SettingsTheme.g.h"
2122
#include "ThemeColor.g.h"
2223
#include "WindowTheme.g.h"
2324
#include "TabRowTheme.g.h"
@@ -81,6 +82,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
8182
};
8283

8384
THEME_OBJECT(WindowTheme, MTSM_THEME_WINDOW_SETTINGS);
85+
THEME_OBJECT(SettingsTheme, MTSM_THEME_SETTINGS_SETTINGS);
8486
THEME_OBJECT(TabRowTheme, MTSM_THEME_TABROW_SETTINGS);
8587
THEME_OBJECT(TabTheme, MTSM_THEME_TAB_SETTINGS);
8688

src/cascadia/TerminalSettingsModel/Theme.idl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ namespace Microsoft.Terminal.Settings.Model
5353
UInt8 UnfocusedTabOpacity { get; };
5454
}
5555

56+
runtimeclass SettingsTheme
57+
{
58+
Windows.UI.Xaml.ElementTheme RequestedTheme { get; };
59+
}
60+
5661
runtimeclass WindowTheme {
5762
Windows.UI.Xaml.ElementTheme RequestedTheme { get; };
5863
Boolean UseMica { get; };
@@ -82,6 +87,9 @@ namespace Microsoft.Terminal.Settings.Model
8287
// window.* Namespace
8388
WindowTheme Window { get; };
8489

90+
// settings.* Namespace
91+
SettingsTheme Settings { get; };
92+
8593
// tabRow.* Namespace
8694
TabRowTheme TabRow { get; };
8795

0 commit comments

Comments
 (0)