Browse Source

Recalculate ToolTip position on target bounds changed

pull/5250/head
Max Katz 6 years ago
parent
commit
3140c1c15e
  1. 13
      src/Avalonia.Controls/ToolTipService.cs

13
src/Avalonia.Controls/ToolTipService.cs

@ -28,12 +28,14 @@ namespace Avalonia.Controls
{
control.PointerEnter -= ControlPointerEnter;
control.PointerLeave -= ControlPointerLeave;
control.PropertyChanged -= Control_PropertyChanged;
}
if (e.NewValue != null)
{
control.PointerEnter += ControlPointerEnter;
control.PointerLeave += ControlPointerLeave;
control.PropertyChanged += Control_PropertyChanged;
}
if (ToolTip.GetIsOpen(control) && e.NewValue != e.OldValue && !(e.NewValue is ToolTip))
@ -97,6 +99,17 @@ namespace Avalonia.Controls
Close(control);
}
private void Control_PropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e)
{
var control = (Control)sender;
if (e.Property == Visual.TransformedBoundsProperty)
{
var toolTip = control.GetValue(ToolTip.ToolTipProperty);
toolTip?.RecalculatePosition(control);
}
}
private void StartShowTimer(int showDelay, Control control)
{
_timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(showDelay) };

Loading…
Cancel
Save