Browse Source

Rename PointerLeave to PointerExited

pull/8396/head
robloo 4 years ago
parent
commit
0863a05c76
  1. 2
      src/Avalonia.Base/Input/IInputElement.cs
  2. 28
      src/Avalonia.Base/Input/InputElement.cs
  3. 4
      src/Avalonia.Base/Input/PointerOverPreProcessor.cs
  4. 12
      src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs
  5. 4
      src/Avalonia.Controls.DataGrid/DataGridCell.cs
  6. 4
      src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs
  7. 4
      src/Avalonia.Controls.DataGrid/DataGridRow.cs
  8. 4
      src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs
  9. 4
      src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs
  10. 34
      src/Avalonia.Controls/MenuItem.cs
  11. 6
      src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs
  12. 4
      src/Avalonia.Controls/Primitives/ScrollBar.cs
  13. 6
      src/Avalonia.Controls/ToolTipService.cs
  14. 2
      src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs
  15. 14
      tests/Avalonia.Base.UnitTests/Input/PointerOverTests.cs
  16. 4
      tests/Avalonia.Controls.UnitTests/ButtonTests.cs
  17. 34
      tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs
  18. 2
      tests/Avalonia.UnitTests/MouseTestHelper.cs

2
src/Avalonia.Base/Input/IInputElement.cs

@ -47,7 +47,7 @@ namespace Avalonia.Input
/// <summary> /// <summary>
/// Occurs when the pointer leaves the control. /// Occurs when the pointer leaves the control.
/// </summary> /// </summary>
event EventHandler<PointerEventArgs>? PointerLeave; event EventHandler<PointerEventArgs>? PointerExited;
/// <summary> /// <summary>
/// Occurs when the pointer is pressed over the control. /// Occurs when the pointer is pressed over the control.

28
src/Avalonia.Base/Input/InputElement.cs

@ -136,11 +136,11 @@ namespace Avalonia.Input
RoutingStrategies.Direct); RoutingStrategies.Direct);
/// <summary> /// <summary>
/// Defines the <see cref="PointerLeave"/> event. /// Defines the <see cref="PointerExited"/> event.
/// </summary> /// </summary>
public static readonly RoutedEvent<PointerEventArgs> PointerLeaveEvent = public static readonly RoutedEvent<PointerEventArgs> PointerExitedEvent =
RoutedEvent.Register<InputElement, PointerEventArgs>( RoutedEvent.Register<InputElement, PointerEventArgs>(
nameof(PointerLeave), nameof(PointerExited),
RoutingStrategies.Direct); RoutingStrategies.Direct);
/// <summary> /// <summary>
@ -212,8 +212,8 @@ namespace Avalonia.Input
KeyDownEvent.AddClassHandler<InputElement>((x, e) => x.OnKeyDown(e)); KeyDownEvent.AddClassHandler<InputElement>((x, e) => x.OnKeyDown(e));
KeyUpEvent.AddClassHandler<InputElement>((x, e) => x.OnKeyUp(e)); KeyUpEvent.AddClassHandler<InputElement>((x, e) => x.OnKeyUp(e));
TextInputEvent.AddClassHandler<InputElement>((x, e) => x.OnTextInput(e)); TextInputEvent.AddClassHandler<InputElement>((x, e) => x.OnTextInput(e));
PointerEnteredEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerEnterCore(e)); PointerEnteredEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerEnteredCore(e));
PointerLeaveEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerLeaveCore(e)); PointerExitedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerExitedCore(e));
PointerMovedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerMoved(e)); PointerMovedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerMoved(e));
PointerPressedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerPressed(e)); PointerPressedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerPressed(e));
PointerReleasedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerReleased(e)); PointerReleasedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerReleased(e));
@ -292,10 +292,10 @@ namespace Avalonia.Input
/// <summary> /// <summary>
/// Occurs when the pointer leaves the control. /// Occurs when the pointer leaves the control.
/// </summary> /// </summary>
public event EventHandler<PointerEventArgs>? PointerLeave public event EventHandler<PointerEventArgs>? PointerExited
{ {
add { AddHandler(PointerLeaveEvent, value); } add { AddHandler(PointerExitedEvent, value); }
remove { RemoveHandler(PointerLeaveEvent, value); } remove { RemoveHandler(PointerExitedEvent, value); }
} }
/// <summary> /// <summary>
@ -551,10 +551,10 @@ namespace Avalonia.Input
} }
/// <summary> /// <summary>
/// Called before the <see cref="PointerLeave"/> event occurs. /// Called before the <see cref="PointerExited"/> event occurs.
/// </summary> /// </summary>
/// <param name="e">The event args.</param> /// <param name="e">The event args.</param>
protected virtual void OnPointerLeave(PointerEventArgs e) protected virtual void OnPointerExited(PointerEventArgs e)
{ {
} }
@ -647,20 +647,20 @@ namespace Avalonia.Input
/// Called before the <see cref="PointerEntered"/> event occurs. /// Called before the <see cref="PointerEntered"/> event occurs.
/// </summary> /// </summary>
/// <param name="e">The event args.</param> /// <param name="e">The event args.</param>
private void OnPointerEnterCore(PointerEventArgs e) private void OnPointerEnteredCore(PointerEventArgs e)
{ {
IsPointerOver = true; IsPointerOver = true;
OnPointerEntered(e); OnPointerEntered(e);
} }
/// <summary> /// <summary>
/// Called before the <see cref="PointerLeave"/> event occurs. /// Called before the <see cref="PointerExited"/> event occurs.
/// </summary> /// </summary>
/// <param name="e">The event args.</param> /// <param name="e">The event args.</param>
private void OnPointerLeaveCore(PointerEventArgs e) private void OnPointerExitedCore(PointerEventArgs e)
{ {
IsPointerOver = false; IsPointerOver = false;
OnPointerLeave(e); OnPointerExited(e);
} }
/// <summary> /// <summary>

4
src/Avalonia.Base/Input/PointerOverPreProcessor.cs

@ -97,7 +97,7 @@ namespace Avalonia.Input
// Do not pass rootVisual, when we have unknown (negative) position, // Do not pass rootVisual, when we have unknown (negative) position,
// so GetPosition won't return invalid values. // so GetPosition won't return invalid values.
var hasPosition = position.X >= 0 && position.Y >= 0; var hasPosition = position.X >= 0 && position.Y >= 0;
var e = new PointerEventArgs(InputElement.PointerLeaveEvent, element, pointer, var e = new PointerEventArgs(InputElement.PointerExitedEvent, element, pointer,
hasPosition ? root : null, hasPosition ? position : default, hasPosition ? root : null, hasPosition ? position : default,
timestamp, properties, inputModifiers); timestamp, properties, inputModifiers);
@ -177,7 +177,7 @@ namespace Avalonia.Input
el = root.PointerOverElement; el = root.PointerOverElement;
var e = new PointerEventArgs(InputElement.PointerLeaveEvent, el, pointer, root, position, var e = new PointerEventArgs(InputElement.PointerExitedEvent, el, pointer, root, position,
timestamp, properties, inputModifiers); timestamp, properties, inputModifiers);
if (el != null && branch != null && !el.IsAttachedToVisualTree) if (el != null && branch != null && !el.IsAttachedToVisualTree)
{ {

12
src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs

@ -129,7 +129,7 @@ namespace Avalonia.Controls.Primitives
if (_inputTarget != null) if (_inputTarget != null)
{ {
_inputTarget.PointerEntered += InputTarget_PointerEntered; _inputTarget.PointerEntered += InputTarget_PointerEntered;
_inputTarget.PointerLeave += InputTarget_PointerLeave; _inputTarget.PointerExited += InputTarget_PointerExited;
_inputTarget.PointerPressed += InputTarget_PointerPressed; _inputTarget.PointerPressed += InputTarget_PointerPressed;
_inputTarget.PointerMoved += InputTarget_PointerMoved; _inputTarget.PointerMoved += InputTarget_PointerMoved;
_inputTarget.PointerReleased += InputTarget_PointerReleased; _inputTarget.PointerReleased += InputTarget_PointerReleased;
@ -195,7 +195,7 @@ namespace Avalonia.Controls.Primitives
if (_inputTarget != null) if (_inputTarget != null)
{ {
_inputTarget.PointerEntered -= InputTarget_PointerEntered; _inputTarget.PointerEntered -= InputTarget_PointerEntered;
_inputTarget.PointerLeave -= InputTarget_PointerLeave; _inputTarget.PointerExited -= InputTarget_PointerExited;
_inputTarget.PointerPressed -= InputTarget_PointerPressed; _inputTarget.PointerPressed -= InputTarget_PointerPressed;
_inputTarget.PointerMoved -= InputTarget_PointerMoved; _inputTarget.PointerMoved -= InputTarget_PointerMoved;
_inputTarget.PointerReleased -= InputTarget_PointerReleased; _inputTarget.PointerReleased -= InputTarget_PointerReleased;
@ -362,7 +362,7 @@ namespace Avalonia.Controls.Primitives
} }
/// <inheritdoc/> /// <inheritdoc/>
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
// We only want to bother with the color name tool tip if we can provide color names. // We only want to bother with the color name tool tip if we can provide color names.
if (_selectionEllipsePanel != null && if (_selectionEllipsePanel != null &&
@ -373,7 +373,7 @@ namespace Avalonia.Controls.Primitives
UpdatePseudoClasses(); UpdatePseudoClasses();
base.OnPointerLeave(e); base.OnPointerExited(e);
} }
/// <inheritdoc/> /// <inheritdoc/>
@ -856,8 +856,8 @@ namespace Avalonia.Controls.Primitives
args.Handled = true; args.Handled = true;
} }
/// <inheritdoc cref="InputElement.PointerLeave"/> /// <inheritdoc cref="InputElement.PointerExited"/>
private void InputTarget_PointerLeave(object? sender, PointerEventArgs args) private void InputTarget_PointerExited(object? sender, PointerEventArgs args)
{ {
_isPointerOver = false; _isPointerOver = false;
UpdatePseudoClasses(); UpdatePseudoClasses();

4
src/Avalonia.Controls.DataGrid/DataGridCell.cs

@ -148,9 +148,9 @@ namespace Avalonia.Controls
IsMouseOver = true; IsMouseOver = true;
} }
} }
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
base.OnPointerLeave(e); base.OnPointerExited(e);
if (OwningRow != null) if (OwningRow != null)
{ {

4
src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs

@ -85,7 +85,7 @@ namespace Avalonia.Controls
PointerReleased += DataGridColumnHeader_PointerReleased; PointerReleased += DataGridColumnHeader_PointerReleased;
PointerMoved += DataGridColumnHeader_PointerMoved; PointerMoved += DataGridColumnHeader_PointerMoved;
PointerEntered += DataGridColumnHeader_PointerEntered; PointerEntered += DataGridColumnHeader_PointerEntered;
PointerLeave += DataGridColumnHeader_PointerLeave; PointerExited += DataGridColumnHeader_PointerExited;
} }
private void OnAreSeparatorsVisibleChanged(AvaloniaPropertyChangedEventArgs e) private void OnAreSeparatorsVisibleChanged(AvaloniaPropertyChangedEventArgs e)
@ -464,7 +464,7 @@ namespace Avalonia.Controls
UpdatePseudoClasses(); UpdatePseudoClasses();
} }
private void DataGridColumnHeader_PointerLeave(object sender, PointerEventArgs e) private void DataGridColumnHeader_PointerExited(object sender, PointerEventArgs e)
{ {
if (!IsEnabled) if (!IsEnabled)
{ {

4
src/Avalonia.Controls.DataGrid/DataGridRow.cs

@ -612,10 +612,10 @@ namespace Avalonia.Controls
base.OnPointerEntered(e); base.OnPointerEntered(e);
IsMouseOver = true; IsMouseOver = true;
} }
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
IsMouseOver = false; IsMouseOver = false;
base.OnPointerLeave(e); base.OnPointerExited(e);
} }
internal void ApplyCellsState() internal void ApplyCellsState()

4
src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs

@ -386,7 +386,7 @@ namespace Avalonia.Controls
base.OnPointerEntered(e); base.OnPointerEntered(e);
} }
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
if (IsEnabled) if (IsEnabled)
{ {
@ -394,7 +394,7 @@ namespace Avalonia.Controls
UpdatePseudoClasses(); UpdatePseudoClasses();
} }
base.OnPointerLeave(e); base.OnPointerExited(e);
} }
private void SetIsCheckedNoCallBack(bool value) private void SetIsCheckedNoCallBack(bool value)

4
src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs

@ -167,14 +167,14 @@ namespace Avalonia.Controls.Primitives
base.OnPointerEntered(e); base.OnPointerEntered(e);
} }
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
if (OwningRow != null) if (OwningRow != null)
{ {
OwningRow.IsMouseOver = false; OwningRow.IsMouseOver = false;
} }
base.OnPointerLeave(e); base.OnPointerExited(e);
} }
//TODO TabStop //TODO TabStop

34
src/Avalonia.Controls/MenuItem.cs

@ -79,25 +79,33 @@ namespace Avalonia.Controls
/// Defines the <see cref="Click"/> event. /// Defines the <see cref="Click"/> event.
/// </summary> /// </summary>
public static readonly RoutedEvent<RoutedEventArgs> ClickEvent = public static readonly RoutedEvent<RoutedEventArgs> ClickEvent =
RoutedEvent.Register<MenuItem, RoutedEventArgs>(nameof(Click), RoutingStrategies.Bubble); RoutedEvent.Register<MenuItem, RoutedEventArgs>(
nameof(Click),
RoutingStrategies.Bubble);
/// <summary> /// <summary>
/// Defines the <see cref="PointerEnteredItem"/> event. /// Defines the <see cref="PointerEnteredItem"/> event.
/// </summary> /// </summary>
public static readonly RoutedEvent<PointerEventArgs> PointerEnteredItemEvent = public static readonly RoutedEvent<PointerEventArgs> PointerEnteredItemEvent =
RoutedEvent.Register<MenuItem, PointerEventArgs>(nameof(PointerEnteredItem), RoutingStrategies.Bubble); RoutedEvent.Register<MenuItem, PointerEventArgs>(
nameof(PointerEnteredItem),
RoutingStrategies.Bubble);
/// <summary> /// <summary>
/// Defines the <see cref="PointerLeaveItem"/> event. /// Defines the <see cref="PointerExitedItem"/> event.
/// </summary> /// </summary>
public static readonly RoutedEvent<PointerEventArgs> PointerLeaveItemEvent = public static readonly RoutedEvent<PointerEventArgs> PointerExitedItemEvent =
RoutedEvent.Register<MenuItem, PointerEventArgs>(nameof(PointerLeaveItem), RoutingStrategies.Bubble); RoutedEvent.Register<MenuItem, PointerEventArgs>(
nameof(PointerExitedItem),
RoutingStrategies.Bubble);
/// <summary> /// <summary>
/// Defines the <see cref="SubmenuOpened"/> event. /// Defines the <see cref="SubmenuOpened"/> event.
/// </summary> /// </summary>
public static readonly RoutedEvent<RoutedEventArgs> SubmenuOpenedEvent = public static readonly RoutedEvent<RoutedEventArgs> SubmenuOpenedEvent =
RoutedEvent.Register<MenuItem, RoutedEventArgs>(nameof(SubmenuOpened), RoutingStrategies.Bubble); RoutedEvent.Register<MenuItem, RoutedEventArgs>(
nameof(SubmenuOpened),
RoutingStrategies.Bubble);
/// <summary> /// <summary>
/// The default value for the <see cref="ItemsControl.ItemsPanel"/> property. /// The default value for the <see cref="ItemsControl.ItemsPanel"/> property.
@ -186,12 +194,12 @@ namespace Avalonia.Controls
/// Raised when the pointer leaves a menu item. /// Raised when the pointer leaves a menu item.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// A bubbling version of the <see cref="InputElement.PointerLeave"/> event for menu items. /// A bubbling version of the <see cref="InputElement.PointerExited"/> event for menu items.
/// </remarks> /// </remarks>
public event EventHandler<PointerEventArgs>? PointerLeaveItem public event EventHandler<PointerEventArgs>? PointerExitedItem
{ {
add { AddHandler(PointerLeaveItemEvent, value); } add { AddHandler(PointerExitedItemEvent, value); }
remove { RemoveHandler(PointerLeaveItemEvent, value); } remove { RemoveHandler(PointerExitedItemEvent, value); }
} }
/// <summary> /// <summary>
@ -447,12 +455,12 @@ namespace Avalonia.Controls
} }
/// <inheritdoc/> /// <inheritdoc/>
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
base.OnPointerLeave(e); base.OnPointerExited(e);
var point = e.GetCurrentPoint(null); var point = e.GetCurrentPoint(null);
RaiseEvent(new PointerEventArgs(PointerLeaveItemEvent, this, e.Pointer, this.VisualRoot, point.Position, RaiseEvent(new PointerEventArgs(PointerExitedItemEvent, this, e.Pointer, this.VisualRoot, point.Position,
e.Timestamp, point.Properties, e.KeyModifiers)); e.Timestamp, point.Properties, e.KeyModifiers));
} }

6
src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs

@ -55,7 +55,7 @@ namespace Avalonia.Controls.Platform
Menu.AddHandler(AccessKeyHandler.AccessKeyPressedEvent, AccessKeyPressed); Menu.AddHandler(AccessKeyHandler.AccessKeyPressedEvent, AccessKeyPressed);
Menu.AddHandler(Avalonia.Controls.Menu.MenuOpenedEvent, MenuOpened); Menu.AddHandler(Avalonia.Controls.Menu.MenuOpenedEvent, MenuOpened);
Menu.AddHandler(MenuItem.PointerEnteredItemEvent, PointerEntered); Menu.AddHandler(MenuItem.PointerEnteredItemEvent, PointerEntered);
Menu.AddHandler(MenuItem.PointerLeaveItemEvent, PointerLeave); Menu.AddHandler(MenuItem.PointerExitedItemEvent, PointerExited);
Menu.AddHandler(InputElement.PointerMovedEvent, PointerMoved); Menu.AddHandler(InputElement.PointerMovedEvent, PointerMoved);
_root = Menu.VisualRoot; _root = Menu.VisualRoot;
@ -91,7 +91,7 @@ namespace Avalonia.Controls.Platform
Menu.RemoveHandler(AccessKeyHandler.AccessKeyPressedEvent, AccessKeyPressed); Menu.RemoveHandler(AccessKeyHandler.AccessKeyPressedEvent, AccessKeyPressed);
Menu.RemoveHandler(Avalonia.Controls.Menu.MenuOpenedEvent, MenuOpened); Menu.RemoveHandler(Avalonia.Controls.Menu.MenuOpenedEvent, MenuOpened);
Menu.RemoveHandler(MenuItem.PointerEnteredItemEvent, PointerEntered); Menu.RemoveHandler(MenuItem.PointerEnteredItemEvent, PointerEntered);
Menu.RemoveHandler(MenuItem.PointerLeaveItemEvent, PointerLeave); Menu.RemoveHandler(MenuItem.PointerExitedItemEvent, PointerExited);
Menu.RemoveHandler(InputElement.PointerMovedEvent, PointerMoved); Menu.RemoveHandler(InputElement.PointerMovedEvent, PointerMoved);
if (_root is InputElement inputRoot) if (_root is InputElement inputRoot)
@ -358,7 +358,7 @@ namespace Avalonia.Controls.Platform
} }
} }
protected internal virtual void PointerLeave(object? sender, PointerEventArgs e) protected internal virtual void PointerExited(object? sender, PointerEventArgs e)
{ {
var item = GetMenuItem(e.Source as IControl); var item = GetMenuItem(e.Source as IControl);

4
src/Avalonia.Controls/Primitives/ScrollBar.cs

@ -228,9 +228,9 @@ namespace Avalonia.Controls.Primitives
} }
} }
protected override void OnPointerLeave(PointerEventArgs e) protected override void OnPointerExited(PointerEventArgs e)
{ {
base.OnPointerLeave(e); base.OnPointerExited(e);
if (AllowAutoHide) if (AllowAutoHide)
{ {

6
src/Avalonia.Controls/ToolTipService.cs

@ -27,13 +27,13 @@ namespace Avalonia.Controls
if (e.OldValue != null) if (e.OldValue != null)
{ {
control.PointerEntered -= ControlPointerEntered; control.PointerEntered -= ControlPointerEntered;
control.PointerLeave -= ControlPointerLeave; control.PointerExited -= ControlPointerExited;
} }
if (e.NewValue != null) if (e.NewValue != null)
{ {
control.PointerEntered += ControlPointerEntered; control.PointerEntered += ControlPointerEntered;
control.PointerLeave += ControlPointerLeave; control.PointerExited += ControlPointerExited;
} }
if (ToolTip.GetIsOpen(control) && e.NewValue != e.OldValue && !(e.NewValue is ToolTip)) if (ToolTip.GetIsOpen(control) && e.NewValue != e.OldValue && !(e.NewValue is ToolTip))
@ -101,7 +101,7 @@ namespace Avalonia.Controls
/// </summary> /// </summary>
/// <param name="sender">The event sender.</param> /// <param name="sender">The event sender.</param>
/// <param name="e">The event args.</param> /// <param name="e">The event args.</param>
private void ControlPointerLeave(object? sender, PointerEventArgs e) private void ControlPointerExited(object? sender, PointerEventArgs e)
{ {
var control = (Control)sender!; var control = (Control)sender!;
Close(control); Close(control);

2
src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs

@ -122,7 +122,7 @@ namespace Avalonia.Diagnostics.Views
if (header != null) if (header != null)
{ {
header.PointerEntered += AddAdorner; header.PointerEntered += AddAdorner;
header.PointerLeave += RemoveAdorner; header.PointerExited += RemoveAdorner;
} }
item.TemplateApplied -= TreeViewItemTemplateApplied; item.TemplateApplied -= TreeViewItemTemplateApplied;

14
tests/Avalonia.Base.UnitTests/Input/PointerOverTests.cs

@ -248,7 +248,7 @@ namespace Avalonia.Base.UnitTests.Input
{ {
((object?)decorator, nameof(InputElement.PointerEntered)), ((object?)decorator, nameof(InputElement.PointerEntered)),
(decorator, nameof(InputElement.PointerMoved)), (decorator, nameof(InputElement.PointerMoved)),
(decorator, nameof(InputElement.PointerLeave)), (decorator, nameof(InputElement.PointerExited)),
(canvas, nameof(InputElement.PointerEntered)), (canvas, nameof(InputElement.PointerEntered)),
(canvas, nameof(InputElement.PointerMoved)) (canvas, nameof(InputElement.PointerMoved))
}, },
@ -297,7 +297,7 @@ namespace Avalonia.Base.UnitTests.Input
Assert.Equal( Assert.Equal(
new[] new[]
{ {
((object?)canvas, nameof(InputElement.PointerLeave)), ((object?)canvas, nameof(InputElement.PointerExited)),
(decorator, nameof(InputElement.PointerEntered)), (decorator, nameof(InputElement.PointerEntered)),
(border, nameof(InputElement.PointerEntered)), (border, nameof(InputElement.PointerEntered)),
}, },
@ -344,8 +344,8 @@ namespace Avalonia.Base.UnitTests.Input
{ {
((object?)canvas, nameof(InputElement.PointerEntered), expectedPosition), ((object?)canvas, nameof(InputElement.PointerEntered), expectedPosition),
(root, nameof(InputElement.PointerEntered), expectedPosition), (root, nameof(InputElement.PointerEntered), expectedPosition),
(canvas, nameof(InputElement.PointerLeave), expectedPosition), (canvas, nameof(InputElement.PointerExited), expectedPosition),
(root, nameof(InputElement.PointerLeave), expectedPosition) (root, nameof(InputElement.PointerExited), expectedPosition)
}, },
result); result);
} }
@ -431,8 +431,8 @@ namespace Avalonia.Base.UnitTests.Input
{ {
((object?)canvas, nameof(InputElement.PointerEntered), lastClientPosition), ((object?)canvas, nameof(InputElement.PointerEntered), lastClientPosition),
(root, nameof(InputElement.PointerEntered), lastClientPosition), (root, nameof(InputElement.PointerEntered), lastClientPosition),
(canvas, nameof(InputElement.PointerLeave), lastClientPosition), (canvas, nameof(InputElement.PointerExited), lastClientPosition),
(root, nameof(InputElement.PointerLeave), lastClientPosition), (root, nameof(InputElement.PointerExited), lastClientPosition),
}, },
result); result);
} }
@ -444,7 +444,7 @@ namespace Avalonia.Base.UnitTests.Input
foreach (var c in controls) foreach (var c in controls)
{ {
c.PointerEntered += handler; c.PointerEntered += handler;
c.PointerLeave += handler; c.PointerExited += handler;
c.PointerMoved += handler; c.PointerMoved += handler;
} }
} }

4
tests/Avalonia.Controls.UnitTests/ButtonTests.cs

@ -185,7 +185,7 @@ namespace Avalonia.Controls.UnitTests
RaisePointerEntered(target); RaisePointerEntered(target);
RaisePointerMove(target, new Point(50,50)); RaisePointerMove(target, new Point(50,50));
RaisePointerPressed(target, 1, MouseButton.Left, new Point(50, 50)); RaisePointerPressed(target, 1, MouseButton.Left, new Point(50, 50));
RaisePointerLeave(target); RaisePointerExited(target);
Assert.Equal(_helper.Captured, target); Assert.Equal(_helper.Captured, target);
@ -427,7 +427,7 @@ namespace Avalonia.Controls.UnitTests
_helper.Enter(button); _helper.Enter(button);
} }
private void RaisePointerLeave(Button button) private void RaisePointerExited(Button button)
{ {
_helper.Leave(button); _helper.Leave(button);
} }

34
tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs

@ -202,31 +202,31 @@ namespace Avalonia.Controls.UnitTests.Platform
} }
[Fact] [Fact]
public void PointerLeave_Deselects_Item_When_Menu_Not_Open() public void PointerExited_Deselects_Item_When_Menu_Not_Open()
{ {
var target = new DefaultMenuInteractionHandler(false); var target = new DefaultMenuInteractionHandler(false);
var menu = new Mock<IMenu>(); var menu = new Mock<IMenu>();
var item = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.Parent == menu.Object); var item = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.Parent == menu.Object);
var e = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var e = CreateArgs(MenuItem.PointerExitedItemEvent, item);
menu.SetupGet(x => x.SelectedItem).Returns(item); menu.SetupGet(x => x.SelectedItem).Returns(item);
target.PointerLeave(item, e); target.PointerExited(item, e);
menu.VerifySet(x => x.SelectedItem = null); menu.VerifySet(x => x.SelectedItem = null);
Assert.False(e.Handled); Assert.False(e.Handled);
} }
[Fact] [Fact]
public void PointerLeave_Doesnt_Deselect_Item_When_Menu_Open() public void PointerExited_Doesnt_Deselect_Item_When_Menu_Open()
{ {
var target = new DefaultMenuInteractionHandler(false); var target = new DefaultMenuInteractionHandler(false);
var menu = new Mock<IMenu>(); var menu = new Mock<IMenu>();
var item = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.Parent == menu.Object); var item = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.Parent == menu.Object);
var e = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var e = CreateArgs(MenuItem.PointerExitedItemEvent, item);
menu.SetupGet(x => x.IsOpen).Returns(true); menu.SetupGet(x => x.IsOpen).Returns(true);
menu.SetupGet(x => x.SelectedItem).Returns(item); menu.SetupGet(x => x.SelectedItem).Returns(item);
target.PointerLeave(item, e); target.PointerExited(item, e);
menu.VerifySet(x => x.SelectedItem = null, Times.Never); menu.VerifySet(x => x.SelectedItem = null, Times.Never);
Assert.False(e.Handled); Assert.False(e.Handled);
@ -438,48 +438,48 @@ namespace Avalonia.Controls.UnitTests.Platform
} }
[Fact] [Fact]
public void PointerLeave_Deselects_Item() public void PointerExited_Deselects_Item()
{ {
var target = new DefaultMenuInteractionHandler(false); var target = new DefaultMenuInteractionHandler(false);
var menu = Mock.Of<IMenu>(); var menu = Mock.Of<IMenu>();
var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu); var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu);
var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem); var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem);
var e = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var e = CreateArgs(MenuItem.PointerExitedItemEvent, item);
Mock.Get(parentItem).SetupGet(x => x.SelectedItem).Returns(item); Mock.Get(parentItem).SetupGet(x => x.SelectedItem).Returns(item);
target.PointerLeave(item, e); target.PointerExited(item, e);
Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null); Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null);
Assert.False(e.Handled); Assert.False(e.Handled);
} }
[Fact] [Fact]
public void PointerLeave_Doesnt_Deselect_Sibling() public void PointerExited_Doesnt_Deselect_Sibling()
{ {
var target = new DefaultMenuInteractionHandler(false); var target = new DefaultMenuInteractionHandler(false);
var menu = Mock.Of<IMenu>(); var menu = Mock.Of<IMenu>();
var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu); var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu);
var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem); var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem);
var sibling = Mock.Of<IMenuItem>(x => x.Parent == parentItem); var sibling = Mock.Of<IMenuItem>(x => x.Parent == parentItem);
var e = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var e = CreateArgs(MenuItem.PointerExitedItemEvent, item);
Mock.Get(parentItem).SetupGet(x => x.SelectedItem).Returns(sibling); Mock.Get(parentItem).SetupGet(x => x.SelectedItem).Returns(sibling);
target.PointerLeave(item, e); target.PointerExited(item, e);
Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null, Times.Never); Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null, Times.Never);
Assert.False(e.Handled); Assert.False(e.Handled);
} }
[Fact] [Fact]
public void PointerLeave_Doesnt_Deselect_Item_If_Pointer_Over_Submenu() public void PointerExited_Doesnt_Deselect_Item_If_Pointer_Over_Submenu()
{ {
var target = new DefaultMenuInteractionHandler(false); var target = new DefaultMenuInteractionHandler(false);
var menu = Mock.Of<IMenu>(); var menu = Mock.Of<IMenu>();
var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu); var parentItem = Mock.Of<IMenuItem>(x => x.IsTopLevel == true && x.HasSubMenu == true && x.Parent == menu);
var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem && x.HasSubMenu == true && x.IsPointerOverSubMenu == true); var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem && x.HasSubMenu == true && x.IsPointerOverSubMenu == true);
var e = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var e = CreateArgs(MenuItem.PointerExitedItemEvent, item);
target.PointerLeave(item, e); target.PointerExited(item, e);
Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null, Times.Never); Mock.Get(parentItem).VerifySet(x => x.SelectedItem = null, Times.Never);
Assert.False(e.Handled); Assert.False(e.Handled);
@ -511,7 +511,7 @@ namespace Avalonia.Controls.UnitTests.Platform
var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem && x.HasSubMenu == true); var item = Mock.Of<IMenuItem>(x => x.Parent == parentItem && x.HasSubMenu == true);
var childItem = Mock.Of<IMenuItem>(x => x.Parent == item); var childItem = Mock.Of<IMenuItem>(x => x.Parent == item);
var enter = CreateArgs(MenuItem.PointerEnteredItemEvent, item); var enter = CreateArgs(MenuItem.PointerEnteredItemEvent, item);
var leave = CreateArgs(MenuItem.PointerLeaveItemEvent, item); var leave = CreateArgs(MenuItem.PointerExitedItemEvent, item);
// Pointer enters item; item is selected. // Pointer enters item; item is selected.
target.PointerEntered(item, enter); target.PointerEntered(item, enter);
@ -526,7 +526,7 @@ namespace Avalonia.Controls.UnitTests.Platform
Mock.Get(item).Invocations.Clear(); Mock.Get(item).Invocations.Clear();
// Pointer briefly exits item, but submenu remains open. // Pointer briefly exits item, but submenu remains open.
target.PointerLeave(item, leave); target.PointerExited(item, leave);
Mock.Get(item).Verify(x => x.Close(), Times.Never); Mock.Get(item).Verify(x => x.Close(), Times.Never);
Mock.Get(item).Invocations.Clear(); Mock.Get(item).Invocations.Clear();

2
tests/Avalonia.UnitTests/MouseTestHelper.cs

@ -113,7 +113,7 @@ namespace Avalonia.UnitTests
public void Leave(IInteractive target) public void Leave(IInteractive target)
{ {
target.RaiseEvent(new PointerEventArgs(InputElement.PointerLeaveEvent, target, _pointer, (IVisual)target, default, target.RaiseEvent(new PointerEventArgs(InputElement.PointerExitedEvent, target, _pointer, (IVisual)target, default,
Timestamp(), new PointerPointProperties((RawInputModifiers)_pressedButtons, PointerUpdateKind.Other), KeyModifiers.None)); Timestamp(), new PointerPointProperties((RawInputModifiers)_pressedButtons, PointerUpdateKind.Other), KeyModifiers.None));
} }

Loading…
Cancel
Save