Browse Source

Implement ToolTip :open pseudo class

pull/4071/head
Max Katz 6 years ago
parent
commit
1fa96f049c
  1. 15
      src/Avalonia.Controls/ToolTip.cs

15
src/Avalonia.Controls/ToolTip.cs

@ -204,13 +204,15 @@ namespace Avalonia.Controls
private static void IsOpenChanged(AvaloniaPropertyChangedEventArgs e)
{
var control = (Control)e.Sender;
var newValue = (bool)e.NewValue;
ToolTip toolTip;
if ((bool)e.NewValue)
if (newValue)
{
var tip = GetTip(control);
if (tip == null) return;
var toolTip = control.GetValue(ToolTipProperty);
toolTip = control.GetValue(ToolTipProperty);
if (toolTip == null || (tip != toolTip && tip != toolTip.Content))
{
toolTip?.Close();
@ -223,9 +225,11 @@ namespace Avalonia.Controls
}
else
{
var toolTip = control.GetValue(ToolTipProperty);
toolTip = control.GetValue(ToolTipProperty);
toolTip?.Close();
}
toolTip?.UpdatePseudoClasses(newValue);
}
private void Open(Control control)
@ -261,5 +265,10 @@ namespace Avalonia.Controls
pr.PlatformImpl.SetWindowManagerAddShadowHint(hint);
}
}
private void UpdatePseudoClasses(bool newValue)
{
PseudoClasses.Set(":open", newValue);
}
}
}

Loading…
Cancel
Save