From 68b723c16c12a7ef2c34f91d47869c0b1611dd39 Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Wed, 20 Aug 2025 17:03:47 -0500 Subject: [PATCH] Remove ProfileName from the surface of CoreSettings (#19261) You know how much I hate squirreling away information on objects we have to pass halfway across the universe just to get back. In this case, `StartingTitle` will always be the name of the profile. We only used ProfileName in places where we _needed a Title_, so this makes it much more obvious what we're doing. --- src/cascadia/TerminalApp/Pane.cpp | 8 +++++--- src/cascadia/TerminalApp/Tab.cpp | 4 ++-- src/cascadia/TerminalControl/IControlSettings.idl | 2 -- src/cascadia/TerminalControl/TermControl.cpp | 4 ++-- src/cascadia/TerminalControl/TermControl.h | 2 +- .../TerminalControl/TermControlAutomationPeer.cpp | 6 +++--- src/cascadia/TerminalSettingsModel/TerminalSettings.cpp | 3 --- src/cascadia/TerminalSettingsModel/TerminalSettings.h | 2 -- src/cascadia/inc/ControlProperties.h | 1 - 9 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/cascadia/TerminalApp/Pane.cpp b/src/cascadia/TerminalApp/Pane.cpp index 1afe0d118a..ed02e5250e 100644 --- a/src/cascadia/TerminalApp/Pane.cpp +++ b/src/cascadia/TerminalApp/Pane.cpp @@ -1161,10 +1161,12 @@ void Pane::SetActive() // focused, else the profile of the last control to be focused Profile Pane::GetFocusedProfile() { - auto lastFocused = GetActivePane(); - if (const auto& terminalPane{ lastFocused->_getTerminalContent() }) + if (auto lastFocused{ GetActivePane() }) { - return terminalPane.GetProfile(); + if (const auto& terminalPane{ lastFocused->_getTerminalContent() }) + { + return terminalPane.GetProfile(); + } } return nullptr; } diff --git a/src/cascadia/TerminalApp/Tab.cpp b/src/cascadia/TerminalApp/Tab.cpp index bd86dcc009..64abdf5c00 100644 --- a/src/cascadia/TerminalApp/Tab.cpp +++ b/src/cascadia/TerminalApp/Tab.cpp @@ -2127,9 +2127,9 @@ namespace winrt::TerminalApp::implementation // - The value to populate in the title run of the tool tip winrt::hstring Tab::_CreateToolTipTitle() { - if (const auto& control{ GetActiveTerminalControl() }) + if (const auto profile{ GetFocusedProfile() }) { - const auto profileName{ control.Settings().ProfileName() }; + const auto profileName{ profile.Name() }; if (profileName != Title()) { return winrt::hstring{ fmt::format(FMT_COMPILE(L"{}: {}"), profileName, Title()) }; diff --git a/src/cascadia/TerminalControl/IControlSettings.idl b/src/cascadia/TerminalControl/IControlSettings.idl index c273574ed7..19355a84a5 100644 --- a/src/cascadia/TerminalControl/IControlSettings.idl +++ b/src/cascadia/TerminalControl/IControlSettings.idl @@ -38,8 +38,6 @@ namespace Microsoft.Terminal.Control interface IControlSettings requires Microsoft.Terminal.Core.ICoreSettings, Microsoft.Terminal.Control.IControlAppearance { - String ProfileName; - Boolean EnableUnfocusedAcrylic { get; }; Guid SessionId { get; }; ScrollbarState ScrollState { get; }; diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index a2580db435..01ebc90d86 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -2610,9 +2610,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation return _core.Title(); } - hstring TermControl::GetProfileName() const + hstring TermControl::GetStartingTitle() const { - return _core.Settings().ProfileName(); + return _core.Settings().StartingTitle(); } hstring TermControl::WorkingDirectory() const diff --git a/src/cascadia/TerminalControl/TermControl.h b/src/cascadia/TerminalControl/TermControl.h index 0aaae9c70f..ccb98db51c 100644 --- a/src/cascadia/TerminalControl/TermControl.h +++ b/src/cascadia/TerminalControl/TermControl.h @@ -58,7 +58,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation uint64_t ContentId() const; - hstring GetProfileName() const; + hstring GetStartingTitle() const; bool CopySelectionToClipboard(bool dismissSelection, bool singleLine, bool withControlSequences, const CopyFormat formats); void PasteTextFromClipboard(); diff --git a/src/cascadia/TerminalControl/TermControlAutomationPeer.cpp b/src/cascadia/TerminalControl/TermControlAutomationPeer.cpp index 90ad7b9876..b978efd842 100644 --- a/src/cascadia/TerminalControl/TermControlAutomationPeer.cpp +++ b/src/cascadia/TerminalControl/TermControlAutomationPeer.cpp @@ -308,14 +308,14 @@ namespace winrt::Microsoft::Terminal::Control::implementation // fall back to title if profile name is empty if (auto control{ _termControl.get() }) { - const auto profileName = control->GetProfileName(); - if (profileName.empty()) + const auto originalName = control->GetStartingTitle(); + if (originalName.empty()) { return control->Title(); } else { - return profileName; + return originalName; } } diff --git a/src/cascadia/TerminalSettingsModel/TerminalSettings.cpp b/src/cascadia/TerminalSettingsModel/TerminalSettings.cpp index 41b50788cd..c6e9359411 100644 --- a/src/cascadia/TerminalSettingsModel/TerminalSettings.cpp +++ b/src/cascadia/TerminalSettingsModel/TerminalSettings.cpp @@ -297,9 +297,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation _AltGrAliasing = profile.AltGrAliasing(); _AnswerbackMessage = profile.AnswerbackMessage(); - // Fill in the remaining properties from the profile - _ProfileName = profile.Name(); - const auto fontInfo = profile.FontInfo(); _FontFace = fontInfo.FontFace(); _FontSize = fontInfo.FontSize(); diff --git a/src/cascadia/TerminalSettingsModel/TerminalSettings.h b/src/cascadia/TerminalSettingsModel/TerminalSettings.h index a2f20bd4b2..4d6a61b116 100644 --- a/src/cascadia/TerminalSettingsModel/TerminalSettings.h +++ b/src/cascadia/TerminalSettingsModel/TerminalSettings.h @@ -121,8 +121,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation // ------------------------ End of Core Settings ----------------------- - INHERITABLE_SETTING(Model::TerminalSettings, hstring, ProfileName); - INHERITABLE_SETTING(Model::TerminalSettings, guid, SessionId); INHERITABLE_SETTING(Model::TerminalSettings, bool, EnableUnfocusedAcrylic, false); INHERITABLE_SETTING(Model::TerminalSettings, bool, UseAcrylic, false); diff --git a/src/cascadia/inc/ControlProperties.h b/src/cascadia/inc/ControlProperties.h index d4e12a94b4..b71548ddd1 100644 --- a/src/cascadia/inc/ControlProperties.h +++ b/src/cascadia/inc/ControlProperties.h @@ -60,7 +60,6 @@ // --------------------------- Control Settings --------------------------- // All of these settings are defined in IControlSettings. #define CONTROL_SETTINGS(X) \ - X(winrt::hstring, ProfileName) \ X(winrt::guid, SessionId) \ X(bool, EnableUnfocusedAcrylic, false) \ X(winrt::hstring, Padding, DEFAULT_PADDING) \