diff --git a/src/cascadia/TerminalApp/AppActionHandlers.cpp b/src/cascadia/TerminalApp/AppActionHandlers.cpp index 238e160c28a..48f1fc1bf62 100644 --- a/src/cascadia/TerminalApp/AppActionHandlers.cpp +++ b/src/cascadia/TerminalApp/AppActionHandlers.cpp @@ -736,6 +736,7 @@ namespace winrt::TerminalApp::implementation } } + _UpdateTeachingTipTheme(WindowRenamer().try_as()); WindowRenamer().IsOpen(true); // PAIN: We can't immediately focus the textbox in the TeachingTip. It's diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 1714e2280ba..2517f0225b1 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -2520,6 +2520,24 @@ namespace winrt::TerminalApp::implementation } } + // Method Description: + // - Update the RequestedTheme of the specified FrameworkElement and all its + // Parent elements. We need to do this so that we can actually theme all + // of the elements of the TeachingTip. See GH#9717 + // Arguments: + // - element: The TeachingTip to set the theme on. + // Return Value: + // - + void TerminalPage::_UpdateTeachingTipTheme(winrt::Windows::UI::Xaml::FrameworkElement element) + { + auto theme{ _settings.GlobalSettings().Theme() }; + while (element) + { + element.RequestedTheme(theme); + element = element.Parent().try_as(); + } + } + // Method Description: // - Display the name and ID of this window in a TeachingTip. If the window // has no name, the name will be presented as "". @@ -2549,6 +2567,7 @@ namespace winrt::TerminalApp::implementation tip.Closed({ page->get_weak(), &TerminalPage::_FocusActiveControl }); } } + _UpdateTeachingTipTheme(WindowIdToast().try_as()); if (page->_windowIdToast != nullptr) { @@ -2642,6 +2661,7 @@ namespace winrt::TerminalApp::implementation tip.Closed({ page->get_weak(), &TerminalPage::_FocusActiveControl }); } } + _UpdateTeachingTipTheme(RenameFailedToast().try_as()); if (page->_windowRenameFailedToast != nullptr) { diff --git a/src/cascadia/TerminalApp/TerminalPage.h b/src/cascadia/TerminalApp/TerminalPage.h index 5a44687d368..7d34f43a3fe 100644 --- a/src/cascadia/TerminalApp/TerminalPage.h +++ b/src/cascadia/TerminalApp/TerminalPage.h @@ -327,6 +327,9 @@ namespace winrt::TerminalApp::implementation void _WindowRenamerActionClick(const IInspectable& sender, const IInspectable& eventArgs); void _RequestWindowRename(const winrt::hstring& newName); void _WindowRenamerKeyUp(const IInspectable& sender, winrt::Windows::UI::Xaml::Input::KeyRoutedEventArgs const& e); + + void _UpdateTeachingTipTheme(winrt::Windows::UI::Xaml::FrameworkElement element); + #pragma region ActionHandlers // These are all defined in AppActionHandlers.cpp #define ON_ALL_ACTIONS(action) DECLARE_ACTION_HANDLER(action);