diff --git a/src/Avalonia.Controls/ToolTip.cs b/src/Avalonia.Controls/ToolTip.cs index 060d559d1a..cff3dab150 100644 --- a/src/Avalonia.Controls/ToolTip.cs +++ b/src/Avalonia.Controls/ToolTip.cs @@ -105,20 +105,17 @@ namespace Avalonia.Controls { if (control != null && control.IsVisible && control.GetVisualRoot() != null) { - if (s_popup == null) + if (s_popup != null) { - s_popup = new PopupRoot - { - Content = new ToolTip(), - }; - - ((ISetLogicalParent)s_popup).SetParent(control); + throw new AvaloniaInternalException("Previous ToolTip not disposed."); } var cp = MouseDevice.Instance?.GetPosition(control); var position = control.PointToScreen(cp ?? new Point(0, 0)) + new Vector(0, 22); - ((ToolTip)s_popup.Content).Content = GetTip(control); + s_popup = new PopupRoot(); + ((ISetLogicalParent)s_popup).SetParent(control); + s_popup.Content = new ToolTip { Content = GetTip(control) }; s_popup.Position = position; s_popup.Show(); @@ -148,9 +145,15 @@ namespace Avalonia.Controls if (control == s_current) { - if (s_popup != null && s_popup.IsVisible) + if (s_popup != null) { - s_popup.Hide(); + // Clear the ToolTip's Content in case it has control content: this will + // reset its visual parent allowing it to be used again. + ((ToolTip)s_popup.Content).Content = null; + + // Dispose of the popup. + s_popup.Dispose(); + s_popup = null; } s_show.OnNext(null); diff --git a/src/Avalonia.Themes.Default/Accents/BaseLight.xaml b/src/Avalonia.Themes.Default/Accents/BaseLight.xaml index 0dae3e1a21..38786f54d3 100644 --- a/src/Avalonia.Themes.Default/Accents/BaseLight.xaml +++ b/src/Avalonia.Themes.Default/Accents/BaseLight.xaml @@ -19,6 +19,7 @@ #66119EDA #33119EDA Red + #10ff0000 2 0.5 diff --git a/src/Avalonia.Themes.Default/DefaultTheme.xaml b/src/Avalonia.Themes.Default/DefaultTheme.xaml index 0fab9ceec7..026834e808 100644 --- a/src/Avalonia.Themes.Default/DefaultTheme.xaml +++ b/src/Avalonia.Themes.Default/DefaultTheme.xaml @@ -1,4 +1,7 @@ + + + @@ -28,7 +31,6 @@ - diff --git a/src/Avalonia.Themes.Default/TextBox.xaml b/src/Avalonia.Themes.Default/TextBox.xaml index 89297d2446..a41f40cc5f 100644 --- a/src/Avalonia.Themes.Default/TextBox.xaml +++ b/src/Avalonia.Themes.Default/TextBox.xaml @@ -78,6 +78,7 @@ \ No newline at end of file