diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt
index ff5d6c6ae0..6589774770 100644
--- a/.github/actions/spelling/expect/expect.txt
+++ b/.github/actions/spelling/expect/expect.txt
@@ -17,6 +17,7 @@ ADDSTRING
ADDTOOL
adml
admx
+Affordance
AFill
AFX
AHelper
diff --git a/src/cascadia/TerminalSettingsEditor/Appearances.xaml b/src/cascadia/TerminalSettingsEditor/Appearances.xaml
index 931727c0e4..e42a77c0c8 100644
--- a/src/cascadia/TerminalSettingsEditor/Appearances.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Appearances.xaml
@@ -68,9 +68,9 @@
+
-
-
@@ -484,13 +484,25 @@
SelectedItem="{x:Bind CurrentAdjustIndistinguishableColors, Mode=TwoWay}"
Style="{StaticResource ComboBoxSettingStyle}" />
+
+
+
+
+
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/cascadia/TerminalSettingsEditor/CommonResources.xaml b/src/cascadia/TerminalSettingsEditor/CommonResources.xaml
index b18ebd4015..cd8bc889c5 100644
--- a/src/cascadia/TerminalSettingsEditor/CommonResources.xaml
+++ b/src/cascadia/TerminalSettingsEditor/CommonResources.xaml
@@ -64,6 +64,7 @@
+
Firebrick
@@ -1228,13 +1229,19 @@
-
+
+
+
+
AmbiguousWidthList { get; };
+
+ IInspectable CurrentGraphicsAPI;
+ Windows.Foundation.Collections.IObservableVector GraphicsAPIList { get; };
+ PERMANENT_OBSERVABLE_PROJECTED_SETTING(Boolean, DisablePartialInvalidation);
+ PERMANENT_OBSERVABLE_PROJECTED_SETTING(Boolean, SoftwareRendering);
}
[default_interface] runtimeclass Compatibility : Windows.UI.Xaml.Controls.Page
diff --git a/src/cascadia/TerminalSettingsEditor/Compatibility.xaml b/src/cascadia/TerminalSettingsEditor/Compatibility.xaml
index 2180322638..c53f42563b 100644
--- a/src/cascadia/TerminalSettingsEditor/Compatibility.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Compatibility.xaml
@@ -25,83 +25,117 @@
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.xaml b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.xaml
index 70fc972a53..312bf80a12 100644
--- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.xaml
+++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.xaml
@@ -27,126 +27,152 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
diff --git a/src/cascadia/TerminalSettingsEditor/Interaction.xaml b/src/cascadia/TerminalSettingsEditor/Interaction.xaml
index f3a24a36a7..e9822039d8 100644
--- a/src/cascadia/TerminalSettingsEditor/Interaction.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Interaction.xaml
@@ -26,149 +26,173 @@
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/cascadia/TerminalSettingsEditor/Launch.xaml b/src/cascadia/TerminalSettingsEditor/Launch.xaml
index e202feef33..cf57488bfa 100644
--- a/src/cascadia/TerminalSettingsEditor/Launch.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Launch.xaml
@@ -43,279 +43,290 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ VerticalAlignment="Center"
+ Maximum="999"
+ Minimum="1"
+ Style="{StaticResource LaunchSizeNumberBoxStyle}"
+ Value="{x:Bind ViewModel.InitialCols, Mode=TwoWay}" />
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.cpp b/src/cascadia/TerminalSettingsEditor/MainPage.cpp
index 28c4a4762d..dd6edab6a5 100644
--- a/src/cascadia/TerminalSettingsEditor/MainPage.cpp
+++ b/src/cascadia/TerminalSettingsEditor/MainPage.cpp
@@ -7,8 +7,6 @@
#include "Launch.h"
#include "Interaction.h"
#include "Compatibility.h"
-#include "Rendering.h"
-#include "RenderingViewModel.h"
#include "Extensions.h"
#include "Actions.h"
#include "ProfileViewModel.h"
@@ -518,11 +516,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
contentFrame().Navigate(xaml_typename(), winrt::make(winrt::make(_settingsClone.GlobalSettings()), *this, elementToFocus));
_breadcrumbs.Append(winrt::make(vm, RS_(L"Nav_Interaction/Content"), BreadcrumbSubPage::None));
}
- else if (*clickedItemTag == renderingTag)
- {
- contentFrame().Navigate(xaml_typename(), winrt::make(winrt::make(_settingsClone), *this, elementToFocus));
- _breadcrumbs.Append(winrt::make(vm, RS_(L"Nav_Rendering/Content"), BreadcrumbSubPage::None));
- }
else if (*clickedItemTag == compatibilityTag)
{
contentFrame().Navigate(xaml_typename(), winrt::make(winrt::make(_settingsClone), *this, elementToFocus));
diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.xaml b/src/cascadia/TerminalSettingsEditor/MainPage.xaml
index 08ff008dec..9215b17090 100644
--- a/src/cascadia/TerminalSettingsEditor/MainPage.xaml
+++ b/src/cascadia/TerminalSettingsEditor/MainPage.xaml
@@ -162,10 +162,6 @@
x:Uid="Nav_Appearance"
Tag="GlobalAppearance_Nav" />
-
-
diff --git a/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj b/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj
index d16f83723b..ba65864e3f 100644
--- a/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj
+++ b/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj
@@ -123,10 +123,6 @@
Profiles.xaml
Code
-
- RenderingViewModel.idl
- Code
-
InteractionViewModel.idl
Code
@@ -171,9 +167,6 @@
Appearances.xaml
Code
-
- Rendering.xaml
-
SettingContainer.idl
@@ -253,9 +246,6 @@
Designer
-
- Designer
-
DefaultStyle
@@ -342,10 +332,6 @@
Profiles.xaml
Code
-
- RenderingViewModel.idl
- Code
-
InteractionViewModel.idl
Code
@@ -390,9 +376,6 @@
Appearances.xaml
Code
-
- Rendering.xaml
-
SettingContainer.idl
@@ -454,10 +437,6 @@
Compatibility.xaml
Code
-
- Rendering.xaml
- Code
-
MainPage.xaml
@@ -471,7 +450,6 @@
Profiles.xaml
Code
-
diff --git a/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj.filters b/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj.filters
index b9504abcf1..7efa01293a 100644
--- a/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj.filters
+++ b/src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj.filters
@@ -24,7 +24,6 @@
-
@@ -48,7 +47,6 @@
-
diff --git a/src/cascadia/TerminalSettingsEditor/NavConstants.h b/src/cascadia/TerminalSettingsEditor/NavConstants.h
index 9d770b5a1e..9ef783d34e 100644
--- a/src/cascadia/TerminalSettingsEditor/NavConstants.h
+++ b/src/cascadia/TerminalSettingsEditor/NavConstants.h
@@ -12,7 +12,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
inline constexpr std::wstring_view openJsonTag{ L"OpenJson_Nav" };
inline constexpr std::wstring_view launchTag{ L"Launch_Nav" };
inline constexpr std::wstring_view interactionTag{ L"Interaction_Nav" };
- inline constexpr std::wstring_view renderingTag{ L"Rendering_Nav" };
inline constexpr std::wstring_view compatibilityTag{ L"Compatibility_Nav" };
inline constexpr std::wstring_view actionsTag{ L"Actions_Nav" };
inline constexpr std::wstring_view newTabMenuTag{ L"NewTabMenu_Nav" };
@@ -29,7 +28,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
std::pair{ interactionTag, L"\xE7C9" }, /* Touch Pointer */
std::pair{ globalAppearanceTag, L"\xE771" }, /* Personalize */
std::pair{ colorSchemesTag, L"\xE790" }, /* Color */
- std::pair{ renderingTag, L"\xE7F8" }, /* Device Laptop No Pic */
std::pair{ compatibilityTag, L"\xEC7A" }, /* Developer Tools */
std::pair{ actionsTag, L"\xE765" }, /* Keyboard Classic */
std::pair{ newTabMenuTag, L"\xE71D" }, /* All Apps */
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
index ed95930333..4f998c1b02 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.cpp
@@ -131,6 +131,10 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
{
_NotifyChanges(L"AccessibleStateDescription");
}
+ else if (viewModelProperty == L"Name" || viewModelProperty == L"IsBaseLayer")
+ {
+ _NotifyChanges(L"SectionHeaderText");
+ }
});
_defaultAppearanceViewModel.PropertyChanged([this](auto&&, const PropertyChangedEventArgs& args) {
@@ -382,6 +386,15 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
return RS_(L"Profile_TabTitleNone");
}
+ hstring ProfileViewModel::SectionHeaderText() const
+ {
+ if (IsBaseLayer())
+ {
+ return RS_(L"Profile_DefaultsSectionHeader");
+ }
+ return hstring{ RS_fmt(L"Profile_NameSectionHeaderFormat", Name()) };
+ }
+
hstring ProfileViewModel::AnswerbackMessagePreview() const
{
if (const auto answerbackMessage{ AnswerbackMessage() }; !answerbackMessage.empty())
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
index 151471682f..79e8dcd66f 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.h
@@ -100,6 +100,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
bool AutoMarkPromptsAvailable() const noexcept;
bool RepositionCursorWithMouseAvailable() const noexcept;
+ hstring SectionHeaderText() const;
bool Orphaned() const;
hstring AccessibleStateDescription() const;
hstring TabTitlePreview() const;
diff --git a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
index 28d50db286..76074e9658 100644
--- a/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
+++ b/src/cascadia/TerminalSettingsEditor/ProfileViewModel.idl
@@ -105,6 +105,7 @@ namespace Microsoft.Terminal.Settings.Editor
void CreateUnfocusedAppearance();
void DeleteUnfocusedAppearance();
+ String SectionHeaderText { get; };
Boolean Orphaned { get; };
String AccessibleStateDescription { get; };
OBSERVABLE_PROJECTED_PROFILE_SETTING(String, Name);
diff --git a/src/cascadia/TerminalSettingsEditor/Profiles_Appearance.xaml b/src/cascadia/TerminalSettingsEditor/Profiles_Appearance.xaml
index 280bca2940..6bc01896c9 100644
--- a/src/cascadia/TerminalSettingsEditor/Profiles_Appearance.xaml
+++ b/src/cascadia/TerminalSettingsEditor/Profiles_Appearance.xaml
@@ -80,11 +80,10 @@
SourceProfile="{x:Bind Profile, Mode=OneWay}"
WindowRoot="{x:Bind WindowRoot, Mode=OneTime}" />
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
();
- _ViewModel = args.ViewModel().as();
- BringIntoViewWhenLoaded(args.ElementToFocus());
-
- TraceLoggingWrite(
- g_hTerminalSettingsEditorProvider,
- "NavigatedToPage",
- TraceLoggingDescription("Event emitted when the user navigates to a page in the settings UI"),
- TraceLoggingValue("rendering", "PageId", "The identifier of the page that was navigated to"),
- TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES),
- TelemetryPrivacyDataTag(PDT_ProductAndServiceUsage));
- }
-}
diff --git a/src/cascadia/TerminalSettingsEditor/Rendering.h b/src/cascadia/TerminalSettingsEditor/Rendering.h
deleted file mode 100644
index dd202b1c7e..0000000000
--- a/src/cascadia/TerminalSettingsEditor/Rendering.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#pragma once
-
-#include "Rendering.g.h"
-#include "Utils.h"
-
-namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
-{
- struct Rendering : public HasScrollViewer, RenderingT
- {
- Rendering();
-
- void OnNavigatedTo(const winrt::Windows::UI::Xaml::Navigation::NavigationEventArgs& e);
-
- til::property_changed_event PropertyChanged;
- WINRT_OBSERVABLE_PROPERTY(Editor::RenderingViewModel, ViewModel, PropertyChanged.raise, nullptr);
- };
-}
-
-namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
-{
- BASIC_FACTORY(Rendering);
-}
diff --git a/src/cascadia/TerminalSettingsEditor/Rendering.idl b/src/cascadia/TerminalSettingsEditor/Rendering.idl
deleted file mode 100644
index 21dc7d8023..0000000000
--- a/src/cascadia/TerminalSettingsEditor/Rendering.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-import "RenderingViewModel.idl";
-
-namespace Microsoft.Terminal.Settings.Editor
-{
- [default_interface] runtimeclass Rendering : Windows.UI.Xaml.Controls.Page
- {
- Rendering();
- RenderingViewModel ViewModel { get; };
- }
-}
diff --git a/src/cascadia/TerminalSettingsEditor/Rendering.xaml b/src/cascadia/TerminalSettingsEditor/Rendering.xaml
deleted file mode 100644
index 9a966d0f91..0000000000
--- a/src/cascadia/TerminalSettingsEditor/Rendering.xaml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.cpp b/src/cascadia/TerminalSettingsEditor/RenderingViewModel.cpp
deleted file mode 100644
index 74c4d5922a..0000000000
--- a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#include "pch.h"
-#include "RenderingViewModel.h"
-
-#include "EnumEntry.h"
-
-#include "RenderingViewModel.g.cpp"
-
-using namespace winrt::Windows::Foundation;
-using namespace winrt::Microsoft::Terminal::Settings::Model;
-
-namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
-{
- RenderingViewModel::RenderingViewModel(CascadiaSettings settings) noexcept :
- _settings{ std::move(settings) }
- {
- INITIALIZE_BINDABLE_ENUM_SETTING(GraphicsAPI, GraphicsAPI, winrt::Microsoft::Terminal::Control::GraphicsAPI, L"Globals_GraphicsAPI_", L"Text");
- }
-}
diff --git a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.h b/src/cascadia/TerminalSettingsEditor/RenderingViewModel.h
deleted file mode 100644
index b3042d893a..0000000000
--- a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#pragma once
-
-#include "RenderingViewModel.g.h"
-#include "Utils.h"
-#include "ViewModelHelpers.h"
-
-namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
-{
- struct RenderingViewModel : RenderingViewModelT, ViewModelHelper
- {
- explicit RenderingViewModel(Model::CascadiaSettings settings) noexcept;
-
- GETSET_BINDABLE_ENUM_SETTING(GraphicsAPI, winrt::Microsoft::Terminal::Control::GraphicsAPI, _settings.GlobalSettings().GraphicsAPI);
- PERMANENT_OBSERVABLE_PROJECTED_SETTING(_settings.GlobalSettings(), DisablePartialInvalidation);
- PERMANENT_OBSERVABLE_PROJECTED_SETTING(_settings.GlobalSettings(), SoftwareRendering);
-
- private:
- Model::CascadiaSettings _settings{ nullptr };
- };
-};
-
-namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
-{
- BASIC_FACTORY(RenderingViewModel);
-}
diff --git a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.idl b/src/cascadia/TerminalSettingsEditor/RenderingViewModel.idl
deleted file mode 100644
index 1ca164fbd9..0000000000
--- a/src/cascadia/TerminalSettingsEditor/RenderingViewModel.idl
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-import "EnumEntry.idl";
-
-#include "ViewModelHelpers.idl.h"
-
-namespace Microsoft.Terminal.Settings.Editor
-{
- runtimeclass RenderingViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
- {
- RenderingViewModel(Microsoft.Terminal.Settings.Model.CascadiaSettings settings);
-
- IInspectable CurrentGraphicsAPI;
- Windows.Foundation.Collections.IObservableVector GraphicsAPIList { get; };
- PERMANENT_OBSERVABLE_PROJECTED_SETTING(Boolean, DisablePartialInvalidation);
- PERMANENT_OBSERVABLE_PROJECTED_SETTING(Boolean, SoftwareRendering);
- }
-}
diff --git a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
index f82c99715e..169dce7e00 100644
--- a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
+++ b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
@@ -650,8 +650,8 @@
A description for what the "word delimiters" setting does. Presented near "Globals_WordDelimiters.Header". "Mark" is used in the sense of "choosing something to interact with."
- Appearance
- Header for the "appearance" menu item. This navigates to a page that lets you see and modify settings related to the app's appearance.
+ Personalization
+ Header for the "personalization" menu item. This navigates to a page that lets you see and modify settings related to the app's appearance.
Color schemes
@@ -677,10 +677,6 @@
Defaults
Header for the "defaults" menu item. This navigates to a page that lets you see and modify settings that affect profiles. This is the lowest layer of profile settings that all other profile settings are based on. If a profile doesn't define a setting, this page is responsible for figuring out what that setting is supposed to be.
-
- Rendering
- Header for the "rendering" menu item. This navigates to a page that lets you see and modify settings related to the app's rendering of text in the terminal.
-
Actions
Header for the "actions" menu item. This navigates to a page that lets you see the available commands in the app.
@@ -1625,10 +1621,6 @@
Name
Header for a control to determine the name of the profile. This is a text box.
-
- Transparency
- Header for a group of settings related to transparency, including the acrylic material background of the app.
-
Background image
Header for a group of settings that control the image presented on the background of the app. Presented near "Profile_BackgroundImage" and other keys starting with "Profile_BackgroundImage".
@@ -1649,10 +1641,6 @@
Warnings
Header for a group of settings that control the warnings in the app.
-
- Window
- Header for a group of settings that control the appearance of the window frame of the app.
-
Open your settings.json file. Alt+Click to open your defaults.json file.
{Locked="settings.json"}, {Locked="defaults.json"}
@@ -2820,4 +2808,100 @@
This text will be inserted between the paths of multiple files dropped into the terminal.
A description for what the "drag drop delimiter" setting does.
-
+
+ Launch behavior
+ Title of a section that groups settings that control how the terminal opens and behaves when launched.
+
+
+ System & input defaults
+ Title of a section that groups settings for default system and input behaviors.
+
+
+ Clipboard and paste behavior
+ Title of a section that groups settings related to selection, copying, and pasting.
+
+
+ Text selection & editing
+ Title of a section that groups settings related to text selection and editing.
+
+
+ Window and layout behavior
+ Title of a section that groups settings related to window sizing, arrangement, and grouping.
+
+
+ Mouse & scrolling
+ Title of a section that groups settings related to mouse and scroll wheel input.
+
+
+ URLs & external actions
+ Title of a section that groups settings related to URLs and external app actions.
+
+
+ Warnings
+ Title of a section that groups warning-related settings.
+
+
+ Visual style
+ Title of a section that groups settings related to the terminal's visual appearance.
+
+
+ Tabs and layout
+ Title of a section that groups settings related to tabs and pane layout.
+
+
+ Window behavior
+ Title of a section that groups settings related to terminal window behavior.
+
+
+ Title bar & identity
+ Title of a section that groups settings related to title bar identity and indicators.
+
+
+ System integration & notifications
+ Title of a section that groups settings related to system integration and notifications.
+
+
+ Compatibility
+ Title of a section that groups compatibility-related settings.
+
+
+ Rendering
+ Title of a section that groups rendering-related settings.
+
+
+ Visual/UI Affordance
+ Title of a section in a profile page that groups visual and UI settings (tab title, icon, tab color, etc.).
+
+
+ Window settings
+ Title of a section expander on the Profile Appearance page that groups window-level appearance settings (background opacity, acrylic, padding, scrollbar visibility).
+
+
+ {0} profile
+ Localizable format string used as the section header for a profile (e.g. "PowerShell profile"). {0} is replaced by the profile's name. Reorder the placeholder if your language requires a different word order.
+
+
+ Profile defaults
+ Header used in place of the "{name} profile" header when the page is showing the profile-defaults layer (which has no profile name).
+
+
+ Typography settings
+ Title of a section that groups settings controlling how text looks in a profile.
+
+
+ Cursor settings
+ Title of a section that groups settings controlling the cursor.
+
+
+ Background image
+ Title of a section that groups settings controlling the background image.
+
+
+ Customize the visual appearance of the profile, including colors, fonts, and text styling.
+ Help text shown below the "Appearance" navigator button on the profile page.
+
+
+ Terminal emulation is how a terminal app interprets text and control sequences to behave like a traditional command-line terminal.
+ Help text shown below the "Terminal" navigator button on the profile page.
+
+
\ No newline at end of file
diff --git a/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp b/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
index 4bac3ead42..cef4d49924 100644
--- a/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
+++ b/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
@@ -159,7 +159,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
// apply header and current value as name (automation property)
Automation::AutomationProperties::SetName(obj, _GenerateAccessibleName());
- // apply help text as tooltip and full description (automation property)
+ // apply help text as full description (automation property)
if (const auto& helpText{ HelpText() }; !helpText.empty())
{
Automation::AutomationProperties::SetFullDescription(obj, helpText);
diff --git a/src/cascadia/TerminalSettingsEditor/Utils.h b/src/cascadia/TerminalSettingsEditor/Utils.h
index 2a4d6f6139..3e86fdc34c 100644
--- a/src/cascadia/TerminalSettingsEditor/Utils.h
+++ b/src/cascadia/TerminalSettingsEditor/Utils.h
@@ -133,11 +133,38 @@ struct HasScrollViewer
{
if (const auto& controlToFocus{ page->FindName(elementName).try_as() })
{
- // We need to wait for the page to be loaded
- // or else the call to StartBringIntoView()
- // will end up doing nothing
- controlToFocus.StartBringIntoView();
- controlToFocus.Focus(winrt::Windows::UI::Xaml::FocusState::Programmatic);
+ // Walk up the visual tree from the deep-link target and
+ // expand any ancestor expanders so the target is actually
+ // visible. This handles both:
+ // - Plain muxc:Expander instances used as section groupings
+ // - SettingContainer instances using an expander style
+ // (i.e. ExpanderSettingContainerStyleWithComplexPreview).
+ winrt::Windows::UI::Xaml::DependencyObject ancestor{ controlToFocus };
+ while (ancestor)
+ {
+ if (const auto& expander{ ancestor.try_as() })
+ {
+ expander.IsExpanded(true);
+ }
+ else if (const auto& settingContainer{ ancestor.try_as() })
+ {
+ settingContainer.SetExpanded(true);
+ }
+ ancestor = winrt::Windows::UI::Xaml::Media::VisualTreeHelper::GetParent(ancestor);
+ }
+
+ // Expanding ancestor expanders triggers asynchronous
+ // layout updates. Defer the bring-into-view + focus to
+ // the next dispatcher tick so the target's final layout
+ // position is known before we scroll/focus.
+ page->Dispatcher().RunAsync(winrt::Windows::UI::Core::CoreDispatcherPriority::Normal, [weakControl{ winrt::weak_ref{ controlToFocus } }]() {
+ if (const auto control = weakControl.get())
+ {
+ control.UpdateLayout();
+ control.StartBringIntoView();
+ control.Focus(winrt::Windows::UI::Xaml::FocusState::Programmatic);
+ }
+ });
}
page->_loadedRevoker.revoke();
}
diff --git a/src/cascadia/UIHelpers/Converters.cpp b/src/cascadia/UIHelpers/Converters.cpp
index e626c2b9e1..94a37fc275 100644
--- a/src/cascadia/UIHelpers/Converters.cpp
+++ b/src/cascadia/UIHelpers/Converters.cpp
@@ -4,6 +4,7 @@
#include
#include "Converters.g.cpp"
+#include "StringNotEmptyToVisibilityConverter.g.cpp"
#pragma warning(disable : 26497) // We will make these functions constexpr, as they are part of an ABI boundary.
#pragma warning(disable : 26440) // The function ... can be declared as noexcept.
@@ -80,4 +81,22 @@ namespace winrt::Microsoft::Terminal::UI::implementation
{
return fontWeight.Weight;
}
+
+ winrt::Windows::Foundation::IInspectable StringNotEmptyToVisibilityConverter::Convert(winrt::Windows::Foundation::IInspectable const& value, winrt::Windows::UI::Xaml::Interop::TypeName const& /*targetType*/, winrt::Windows::Foundation::IInspectable const& /*parameter*/, winrt::hstring const& /*language*/)
+ {
+ winrt::hstring text;
+ if (value)
+ {
+ if (const auto& str{ value.try_as() })
+ {
+ text = *str;
+ }
+ }
+ return winrt::box_value(Converters::StringNotEmptyToVisibility(text));
+ }
+
+ winrt::Windows::Foundation::IInspectable StringNotEmptyToVisibilityConverter::ConvertBack(winrt::Windows::Foundation::IInspectable const& /*value*/, winrt::Windows::UI::Xaml::Interop::TypeName const& /*targetType*/, winrt::Windows::Foundation::IInspectable const& /*parameter*/, winrt::hstring const& /*language*/)
+ {
+ throw winrt::hresult_not_implemented();
+ }
}
diff --git a/src/cascadia/UIHelpers/Converters.h b/src/cascadia/UIHelpers/Converters.h
index 998daad41f..f8844f47ca 100644
--- a/src/cascadia/UIHelpers/Converters.h
+++ b/src/cascadia/UIHelpers/Converters.h
@@ -4,6 +4,7 @@
#pragma once
#include "Converters.g.h"
+#include "StringNotEmptyToVisibilityConverter.g.h"
namespace winrt::Microsoft::Terminal::UI::implementation
{
@@ -29,11 +30,18 @@ namespace winrt::Microsoft::Terminal::UI::implementation
static winrt::Windows::UI::Xaml::Media::SolidColorBrush ColorToBrush(winrt::Windows::UI::Color color);
static double FontWeightToDouble(winrt::Windows::UI::Text::FontWeight fontWeight);
};
+
+ struct StringNotEmptyToVisibilityConverter : StringNotEmptyToVisibilityConverterT
+ {
+ StringNotEmptyToVisibilityConverter() = default;
+
+ winrt::Windows::Foundation::IInspectable Convert(winrt::Windows::Foundation::IInspectable const& value, winrt::Windows::UI::Xaml::Interop::TypeName const& targetType, winrt::Windows::Foundation::IInspectable const& parameter, winrt::hstring const& language);
+ winrt::Windows::Foundation::IInspectable ConvertBack(winrt::Windows::Foundation::IInspectable const& value, winrt::Windows::UI::Xaml::Interop::TypeName const& targetType, winrt::Windows::Foundation::IInspectable const& parameter, winrt::hstring const& language);
+ };
}
namespace winrt::Microsoft::Terminal::UI::factory_implementation
{
- struct Converters : ConvertersT
- {
- };
+ BASIC_FACTORY(Converters);
+ BASIC_FACTORY(StringNotEmptyToVisibilityConverter);
}
diff --git a/src/cascadia/UIHelpers/Converters.idl b/src/cascadia/UIHelpers/Converters.idl
index 5cd5b55325..0e107da9eb 100644
--- a/src/cascadia/UIHelpers/Converters.idl
+++ b/src/cascadia/UIHelpers/Converters.idl
@@ -27,4 +27,12 @@ namespace Microsoft.Terminal.UI
static Windows.UI.Xaml.Media.SolidColorBrush ColorToBrush(Windows.UI.Color color);
static Double FontWeightToDouble(Windows.UI.Text.FontWeight fontWeight);
}
+
+ // IValueConverter wrapper around Converters.StringNotEmptyToVisibility, for use
+ // in classic {Binding} scenarios (e.g. ControlTemplates) where x:Bind function
+ // syntax against the static Converters helpers isn't available.
+ runtimeclass StringNotEmptyToVisibilityConverter : [default] Windows.UI.Xaml.Data.IValueConverter
+ {
+ StringNotEmptyToVisibilityConverter();
+ }
}
diff --git a/src/cascadia/UIHelpers/pch.h b/src/cascadia/UIHelpers/pch.h
index d660a8d832..1a2b7cb368 100644
--- a/src/cascadia/UIHelpers/pch.h
+++ b/src/cascadia/UIHelpers/pch.h
@@ -32,6 +32,7 @@
#include
#include
+#include
#include
#include
#include
diff --git a/tools/GenerateSettingsIndex.ps1 b/tools/GenerateSettingsIndex.ps1
index 2122ab2d44..ca05a48e44 100644
--- a/tools/GenerateSettingsIndex.ps1
+++ b/tools/GenerateSettingsIndex.ps1
@@ -56,11 +56,6 @@ $ClassMap = @{
NavigationParam = "ColorSchemes_Nav"
SubPage = "BreadcrumbSubPage::None"
}
- "Microsoft::Terminal::Settings::Editor::Rendering" = @{
- ResourceName = "Nav_Rendering/Content"
- NavigationParam = "Rendering_Nav"
- SubPage = "BreadcrumbSubPage::None"
- }
"Microsoft::Terminal::Settings::Editor::Compatibility" = @{
ResourceName = "Nav_Compatibility/Content"
NavigationParam = "Compatibility_Nav"