From e0a8248fba84bd21920dc45c91c9f18e1fd99128 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 14 Jan 2021 21:31:17 -0500 Subject: [PATCH 1/2] Close tooltip on null Tip value --- src/Avalonia.Controls/ToolTipService.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Controls/ToolTipService.cs b/src/Avalonia.Controls/ToolTipService.cs index 9e0bf60f42..f6458c2112 100644 --- a/src/Avalonia.Controls/ToolTipService.cs +++ b/src/Avalonia.Controls/ToolTipService.cs @@ -38,9 +38,16 @@ namespace Avalonia.Controls if (ToolTip.GetIsOpen(control) && e.NewValue != e.OldValue && !(e.NewValue is ToolTip)) { - var tip = control.GetValue(ToolTip.ToolTipProperty); - - tip.Content = e.NewValue; + if (e.NewValue is null) + { + Close(control); + } + else + { + var tip = control.GetValue(ToolTip.ToolTipProperty); + + tip.Content = e.NewValue; + } } } From dc7e33e4f3ea1e498b484eea93ee0fddcc83e690 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 14 Jan 2021 21:45:23 -0500 Subject: [PATCH 2/2] Add Should_Close_On_Null_Tip test --- .../ToolTipTests.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs b/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs index 9279e78013..25969a58e3 100644 --- a/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ToolTipTests.cs @@ -270,6 +270,34 @@ namespace Avalonia.Controls.UnitTests Assert.Empty(toolTip.Classes); } } + + [Fact] + public void Should_Close_On_Null_Tip() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var window = new Window(); + + var target = new Decorator() + { + [ToolTip.TipProperty] = "Tip", + [ToolTip.ShowDelayProperty] = 0 + }; + + window.Content = target; + + window.ApplyTemplate(); + window.Presenter.ApplyTemplate(); + + _mouseHelper.Enter(target); + + Assert.True(ToolTip.GetIsOpen(target)); + + target[ToolTip.TipProperty] = null; + + Assert.False(ToolTip.GetIsOpen(target)); + } + } } internal class ToolTipViewModel