From 953620669d3325599dbe869fd2b7bb2cff31120e Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Wed, 3 Nov 2021 15:13:06 -0500 Subject: [PATCH] Prototype: get some tooltips back --- .../TerminalApp/MinMaxCloseControl.cpp | 30 +++++++++++++++++++ src/cascadia/TerminalApp/MinMaxCloseControl.h | 3 ++ .../TerminalApp/MinMaxCloseControl.idl | 5 +++- .../TerminalApp/MinMaxCloseControl.xaml | 16 ++++++++-- .../Resources/en-US/Resources.resw | 6 ++++ 5 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/cascadia/TerminalApp/MinMaxCloseControl.cpp b/src/cascadia/TerminalApp/MinMaxCloseControl.cpp index e1a315ad1..e4976fb6c 100644 --- a/src/cascadia/TerminalApp/MinMaxCloseControl.cpp +++ b/src/cascadia/TerminalApp/MinMaxCloseControl.cpp @@ -20,6 +20,7 @@ namespace winrt::TerminalApp::implementation MinMaxCloseControl::MinMaxCloseControl() { InitializeComponent(); + _MinimizeToolTip = RS_(L"WindowMinimizeButtonToolTipText"); } // These event handlers simply forward each buttons click events up to the @@ -104,16 +105,45 @@ namespace winrt::TerminalApp::implementation VisualStateManager::GoToState(MinimizeButton(), L"PointerOver", false); VisualStateManager::GoToState(MaximizeButton(), L"Normal", false); VisualStateManager::GoToState(CloseButton(), L"Normal", false); + if (auto tt{ Controls::ToolTipService::GetToolTip(MinimizeButton()) }) + { + if (auto tooltip{ tt.try_as() }) + { + tooltip.IsOpen(true); + } + } + break; case CaptionButton::Maximize: VisualStateManager::GoToState(MinimizeButton(), L"Normal", false); VisualStateManager::GoToState(MaximizeButton(), L"PointerOver", false); VisualStateManager::GoToState(CloseButton(), L"Normal", false); + if (auto tt{ Controls::ToolTipService::GetToolTip(MaximizeButton()) }) + { + if (auto tooltip{ tt.try_as() }) + { + tooltip.IsOpen(true); + } + } break; case CaptionButton::Close: VisualStateManager::GoToState(MinimizeButton(), L"Normal", false); VisualStateManager::GoToState(MaximizeButton(), L"Normal", false); VisualStateManager::GoToState(CloseButton(), L"PointerOver", false); + if (auto tt{ Controls::ToolTipService::GetToolTip(CloseButton()) }) + { + if (auto tooltip{ tt.try_as() }) + { + tooltip.IsOpen(true); + } + else if (auto s{winrt::unbox_value(tt)}; !s.empty()) + { + s; + int a = 0; + a++; + a; + } + } break; } } diff --git a/src/cascadia/TerminalApp/MinMaxCloseControl.h b/src/cascadia/TerminalApp/MinMaxCloseControl.h index e69616038..9bcd81def 100644 --- a/src/cascadia/TerminalApp/MinMaxCloseControl.h +++ b/src/cascadia/TerminalApp/MinMaxCloseControl.h @@ -31,6 +31,9 @@ namespace winrt::TerminalApp::implementation void _CloseClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e); + WINRT_CALLBACK(PropertyChanged, Windows::UI::Xaml::Data::PropertyChangedEventHandler); + WINRT_OBSERVABLE_PROPERTY(winrt::hstring, MinimizeToolTip, _PropertyChangedHandlers); + TYPED_EVENT(MinimizeClick, TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs); TYPED_EVENT(MaximizeClick, TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs); TYPED_EVENT(CloseClick, TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs); diff --git a/src/cascadia/TerminalApp/MinMaxCloseControl.idl b/src/cascadia/TerminalApp/MinMaxCloseControl.idl index 61600fe27..06b481e4a 100644 --- a/src/cascadia/TerminalApp/MinMaxCloseControl.idl +++ b/src/cascadia/TerminalApp/MinMaxCloseControl.idl @@ -5,7 +5,8 @@ import "TitlebarControl.idl"; namespace TerminalApp { - [default_interface] runtimeclass MinMaxCloseControl : Windows.UI.Xaml.Controls.StackPanel + [default_interface] runtimeclass MinMaxCloseControl : Windows.UI.Xaml.Controls.StackPanel, + Windows.UI.Xaml.Data.INotifyPropertyChanged { MinMaxCloseControl(); @@ -15,6 +16,8 @@ namespace TerminalApp void PressButton(CaptionButton button); void ReleaseButtons(); + String MinimizeToolTip { get; }; + event Windows.Foundation.TypedEventHandler MinimizeClick; event Windows.Foundation.TypedEventHandler MaximizeClick; event Windows.Foundation.TypedEventHandler CloseClick; diff --git a/src/cascadia/TerminalApp/MinMaxCloseControl.xaml b/src/cascadia/TerminalApp/MinMaxCloseControl.xaml index 105de2226..684831586 100644 --- a/src/cascadia/TerminalApp/MinMaxCloseControl.xaml +++ b/src/cascadia/TerminalApp/MinMaxCloseControl.xaml @@ -220,7 +220,7 @@ diff --git a/src/cascadia/TerminalApp/Resources/en-US/Resources.resw b/src/cascadia/TerminalApp/Resources/en-US/Resources.resw index 56bc3ed17..a2da0841e 100644 --- a/src/cascadia/TerminalApp/Resources/en-US/Resources.resw +++ b/src/cascadia/TerminalApp/Resources/en-US/Resources.resw @@ -411,6 +411,9 @@ Close + + Close + Maximize @@ -420,6 +423,9 @@ Minimize + + Minimize + About