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

Loading…
Cancel
Save