From a89c3e2f8527a51b39768980627ed8f7c1ea5f0b Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Tue, 12 Oct 2021 17:12:21 -0500 Subject: [PATCH] Add an Open Settings link to the "Default Terminal" tip (#11491) This commit switches the [X] button in the info bar to permanently dismiss the tip and fixes a focus transition issue. Closes #11483 --- .../Resources/en-US/Resources.resw | 4 ++++ src/cascadia/TerminalApp/TerminalPage.cpp | 21 ++++++++++++++++++- src/cascadia/TerminalApp/TerminalPage.h | 3 ++- src/cascadia/TerminalApp/TerminalPage.xaml | 5 +++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/cascadia/TerminalApp/Resources/en-US/Resources.resw b/src/cascadia/TerminalApp/Resources/en-US/Resources.resw index c9f84a239..56bc3ed17 100644 --- a/src/cascadia/TerminalApp/Resources/en-US/Resources.resw +++ b/src/cascadia/TerminalApp/Resources/en-US/Resources.resw @@ -727,4 +727,8 @@ This Terminal window is running as Admin + + Open Settings + This is a call-to-action hyperlink; it will open the settings. + diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 3fe49f7e5..b779b5069 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -2902,6 +2902,7 @@ namespace winrt::TerminalApp::implementation if (const auto infoBar = FindName(L"SetAsDefaultInfoBar").try_as()) { + TraceLoggingWrite(g_hTerminalAppProvider, "SetAsDefaultTipPresented", TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance)); infoBar.IsOpen(true); } } @@ -3333,13 +3334,31 @@ namespace winrt::TerminalApp::implementation // - // Return Value: // - - void TerminalPage::_SetAsDefaultDismissHandler(const IInspectable& /*sender*/, const IInspectable& /*args*/) const + void TerminalPage::_SetAsDefaultDismissHandler(const IInspectable& /*sender*/, const IInspectable& /*args*/) { _DismissMessage(InfoBarMessage::SetAsDefault); if (const auto infoBar = FindName(L"SetAsDefaultInfoBar").try_as()) { infoBar.IsOpen(false); } + + TraceLoggingWrite(g_hTerminalAppProvider, "SetAsDefaultTipDismissed", TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), TelemetryPrivacyDataTag(PDT_ProductAndServiceUsage)); + + _FocusCurrentTab(true); + } + + // Method Description: + // - Dismisses the Default Terminal tip and opens the settings. + void TerminalPage::_SetAsDefaultOpenSettingsHandler(const IInspectable& /*sender*/, const IInspectable& /*args*/) + { + if (const auto infoBar = FindName(L"SetAsDefaultInfoBar").try_as()) + { + infoBar.IsOpen(false); + } + + TraceLoggingWrite(g_hTerminalAppProvider, "SetAsDefaultTipInteracted", TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), TelemetryPrivacyDataTag(PDT_ProductAndServiceUsage)); + + _OpenSettingsUI(); } // Method Description: diff --git a/src/cascadia/TerminalApp/TerminalPage.h b/src/cascadia/TerminalApp/TerminalPage.h index e3b9f2f97..f6de6a28b 100644 --- a/src/cascadia/TerminalApp/TerminalPage.h +++ b/src/cascadia/TerminalApp/TerminalPage.h @@ -404,7 +404,8 @@ namespace winrt::TerminalApp::implementation winrt::fire_and_forget _ConnectionStateChangedHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const; void _CloseOnExitInfoDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const; void _KeyboardServiceWarningInfoDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const; - void _SetAsDefaultDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const; + void _SetAsDefaultDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args); + void _SetAsDefaultOpenSettingsHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args); static bool _IsMessageDismissed(const winrt::Microsoft::Terminal::Settings::Model::InfoBarMessage& message); static void _DismissMessage(const winrt::Microsoft::Terminal::Settings::Model::InfoBarMessage& message); diff --git a/src/cascadia/TerminalApp/TerminalPage.xaml b/src/cascadia/TerminalApp/TerminalPage.xaml index f5e5b7df4..ef16f6a7a 100644 --- a/src/cascadia/TerminalApp/TerminalPage.xaml +++ b/src/cascadia/TerminalApp/TerminalPage.xaml @@ -145,13 +145,14 @@ -