Browse Source

Use EffectiveViewportChanged instead of subscribing on PropertyChanged

pull/5250/head
Max Katz 6 years ago
parent
commit
ee717223f0
  1. 15
      src/Avalonia.Controls/ToolTipService.cs

15
src/Avalonia.Controls/ToolTipService.cs

@ -28,14 +28,12 @@ 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))
@ -53,10 +51,12 @@ namespace Avalonia.Controls
if (e.OldValue is false && e.NewValue is true)
{
control.DetachedFromVisualTree += ControlDetaching;
control.EffectiveViewportChanged += ControlEffectiveViewportChanged;
}
else if(e.OldValue is true && e.NewValue is false)
{
control.DetachedFromVisualTree -= ControlDetaching;
control.EffectiveViewportChanged -= ControlEffectiveViewportChanged;
}
}
@ -64,6 +64,7 @@ namespace Avalonia.Controls
{
var control = (Control)sender;
control.DetachedFromVisualTree -= ControlDetaching;
control.EffectiveViewportChanged -= ControlEffectiveViewportChanged;
Close(control);
}
@ -99,15 +100,11 @@ namespace Avalonia.Controls
Close(control);
}
private void Control_PropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e)
private void ControlEffectiveViewportChanged(object sender, Layout.EffectiveViewportChangedEventArgs e)
{
var control = (Control)sender;
if (e.Property == Visual.BoundsProperty)
{
var toolTip = control.GetValue(ToolTip.ToolTipProperty);
toolTip?.RecalculatePosition(control);
}
var toolTip = control.GetValue(ToolTip.ToolTipProperty);
toolTip?.RecalculatePosition(control);
}
private void StartShowTimer(int showDelay, Control control)

Loading…
Cancel
Save