Files
Toolkit2/Toolkit.Avalonia/UserInteraction.cs
T
TheXamlGuy 43ad8c7ac2 Spacing
2024-07-18 21:50:59 +01:00

42 lines
1.4 KiB
C#

using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Toolkit.Foundation;
namespace Toolkit.Avalonia;
public class UserInteraction(ITopLevelProvider topLevelProvider) :
IUserInteraction
{
public event EventHandler<UserInteractedEventArgs>? UserInteracted;
private void OnPointerMoved(object? sender,
PointerEventArgs args) => UserInteracted?.Invoke(this, new UserInteractedEventArgs());
private void OnKeyDown(object? sender,
KeyEventArgs args) => UserInteracted?.Invoke(this, new UserInteractedEventArgs());
private void OnKeyUp(object? sender,
KeyEventArgs args) => UserInteracted?.Invoke(this, new UserInteractedEventArgs());
public void Stop()
{
if (topLevelProvider.Get() is TopLevel topLevel)
{
topLevel.RemoveHandler(InputElement.PointerMovedEvent, OnPointerMoved);
topLevel.RemoveHandler(InputElement.KeyDownEvent, OnKeyDown);
topLevel.RemoveHandler(InputElement.KeyUpEvent, OnKeyUp);
}
}
public void Start()
{
if (topLevelProvider.Get() is TopLevel topLevel)
{
topLevel.AddHandler(InputElement.PointerMovedEvent, OnPointerMoved, RoutingStrategies.Tunnel);
topLevel.AddHandler(InputElement.KeyDownEvent, OnKeyDown, RoutingStrategies.Tunnel);
topLevel.AddHandler(InputElement.KeyUpEvent, OnKeyUp, RoutingStrategies.Tunnel);
}
}
}