Only one tooltip at a time please

This commit is contained in:
Mike Griese 2021-11-03 15:15:43 -05:00
parent 953620669d
commit 0fa10cd3ef
4 changed files with 27 additions and 38 deletions

View file

@ -20,7 +20,6 @@ namespace winrt::TerminalApp::implementation
MinMaxCloseControl::MinMaxCloseControl() MinMaxCloseControl::MinMaxCloseControl()
{ {
InitializeComponent(); InitializeComponent();
_MinimizeToolTip = RS_(L"WindowMinimizeButtonToolTipText");
} }
// These event handlers simply forward each buttons click events up to the // These event handlers simply forward each buttons click events up to the
@ -97,6 +96,17 @@ namespace winrt::TerminalApp::implementation
} }
} }
void _openToolTipForButton(const Controls::Button& button, const bool isOpen)
{
if (auto tt{ Controls::ToolTipService::GetToolTip(button) })
{
if (auto tooltip{ tt.try_as<Controls::ToolTip>() })
{
tooltip.IsOpen(isOpen);
}
}
}
void MinMaxCloseControl::HoverButton(CaptionButton button) void MinMaxCloseControl::HoverButton(CaptionButton button)
{ {
switch (button) switch (button)
@ -105,48 +115,29 @@ namespace winrt::TerminalApp::implementation
VisualStateManager::GoToState(MinimizeButton(), L"PointerOver", false); VisualStateManager::GoToState(MinimizeButton(), L"PointerOver", false);
VisualStateManager::GoToState(MaximizeButton(), L"Normal", false); VisualStateManager::GoToState(MaximizeButton(), L"Normal", false);
VisualStateManager::GoToState(CloseButton(), L"Normal", false); VisualStateManager::GoToState(CloseButton(), L"Normal", false);
if (auto tt{ Controls::ToolTipService::GetToolTip(MinimizeButton()) }) _openToolTipForButton(MinimizeButton(), true);
{ _openToolTipForButton(MaximizeButton(), false);
if (auto tooltip{ tt.try_as<Controls::ToolTip>() }) _openToolTipForButton(CloseButton(), false);
{
tooltip.IsOpen(true);
}
}
break; break;
case CaptionButton::Maximize: case CaptionButton::Maximize:
VisualStateManager::GoToState(MinimizeButton(), L"Normal", false); VisualStateManager::GoToState(MinimizeButton(), L"Normal", false);
VisualStateManager::GoToState(MaximizeButton(), L"PointerOver", false); VisualStateManager::GoToState(MaximizeButton(), L"PointerOver", false);
VisualStateManager::GoToState(CloseButton(), L"Normal", false); VisualStateManager::GoToState(CloseButton(), L"Normal", false);
if (auto tt{ Controls::ToolTipService::GetToolTip(MaximizeButton()) }) _openToolTipForButton(MinimizeButton(), false);
{ _openToolTipForButton(MaximizeButton(), true);
if (auto tooltip{ tt.try_as<Controls::ToolTip>() }) _openToolTipForButton(CloseButton(), false);
{
tooltip.IsOpen(true);
}
}
break; break;
case CaptionButton::Close: case CaptionButton::Close:
VisualStateManager::GoToState(MinimizeButton(), L"Normal", false); VisualStateManager::GoToState(MinimizeButton(), L"Normal", false);
VisualStateManager::GoToState(MaximizeButton(), L"Normal", false); VisualStateManager::GoToState(MaximizeButton(), L"Normal", false);
VisualStateManager::GoToState(CloseButton(), L"PointerOver", false); VisualStateManager::GoToState(CloseButton(), L"PointerOver", false);
if (auto tt{ Controls::ToolTipService::GetToolTip(CloseButton()) }) _openToolTipForButton(MinimizeButton(), false);
{ _openToolTipForButton(MaximizeButton(), false);
if (auto tooltip{ tt.try_as<Controls::ToolTip>() }) _openToolTipForButton(CloseButton(), true);
{
tooltip.IsOpen(true);
}
else if (auto s{winrt::unbox_value<winrt::hstring>(tt)}; !s.empty())
{
s;
int a = 0;
a++;
a;
}
}
break; break;
} }
} }
void MinMaxCloseControl::PressButton(CaptionButton button) void MinMaxCloseControl::PressButton(CaptionButton button)
{ {
switch (button) switch (button)
@ -168,10 +159,14 @@ namespace winrt::TerminalApp::implementation
break; break;
} }
} }
void MinMaxCloseControl::ReleaseButtons() void MinMaxCloseControl::ReleaseButtons()
{ {
VisualStateManager::GoToState(MinimizeButton(), L"Normal", false); VisualStateManager::GoToState(MinimizeButton(), L"Normal", false);
VisualStateManager::GoToState(MaximizeButton(), L"Normal", false); VisualStateManager::GoToState(MaximizeButton(), L"Normal", false);
VisualStateManager::GoToState(CloseButton(), L"Normal", false); VisualStateManager::GoToState(CloseButton(), L"Normal", false);
_openToolTipForButton(MinimizeButton(), false);
_openToolTipForButton(MaximizeButton(), false);
_openToolTipForButton(CloseButton(), false);
} }
} }

View file

@ -31,9 +31,6 @@ namespace winrt::TerminalApp::implementation
void _CloseClick(winrt::Windows::Foundation::IInspectable const& sender, void _CloseClick(winrt::Windows::Foundation::IInspectable const& sender,
winrt::Windows::UI::Xaml::RoutedEventArgs const& e); 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(MinimizeClick, TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs);
TYPED_EVENT(MaximizeClick, 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); TYPED_EVENT(CloseClick, TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs);

View file

@ -5,8 +5,7 @@ import "TitlebarControl.idl";
namespace TerminalApp 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(); MinMaxCloseControl();
@ -16,8 +15,6 @@ namespace TerminalApp
void PressButton(CaptionButton button); void PressButton(CaptionButton button);
void ReleaseButtons(); void ReleaseButtons();
String MinimizeToolTip { get; };
event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MinimizeClick; event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MinimizeClick;
event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MaximizeClick; event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MaximizeClick;
event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> CloseClick; event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> CloseClick;

View file

@ -423,7 +423,7 @@
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve"> <data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Minimize</value> <value>Minimize</value>
</data> </data>
<data name="WindowMinimizeButtonToolTipText" xml:space="preserve"> <data name="WindowMinimizeButtonToolTip.Text" xml:space="preserve">
<value>Minimize</value> <value>Minimize</value>
</data> </data>
<data name="AboutDialog.Title" xml:space="preserve"> <data name="AboutDialog.Title" xml:space="preserve">