Browse Source

Add tapped event args

pull/5340/head
Max Katz 6 years ago
parent
commit
1a8f2f7f35
  1. 20
      src/Avalonia.Input/Gestures.cs
  2. 8
      src/Avalonia.Input/InputElement.cs
  3. 44
      src/Avalonia.Input/TappedGestureEventArgs.cs

20
src/Avalonia.Input/Gestures.cs

@ -6,17 +6,17 @@ namespace Avalonia.Input
{
public static class Gestures
{
public static readonly RoutedEvent<RoutedEventArgs> TappedEvent = RoutedEvent.Register<RoutedEventArgs>(
public static readonly RoutedEvent<TappedEventArgs> TappedEvent = RoutedEvent.Register<TappedEventArgs>(
"Tapped",
RoutingStrategies.Bubble,
typeof(Gestures));
public static readonly RoutedEvent<RoutedEventArgs> DoubleTappedEvent = RoutedEvent.Register<RoutedEventArgs>(
public static readonly RoutedEvent<DoubleTappedEventArgs> DoubleTappedEvent = RoutedEvent.Register<DoubleTappedEventArgs>(
"DoubleTapped",
RoutingStrategies.Bubble,
typeof(Gestures));
public static readonly RoutedEvent<RoutedEventArgs> RightTappedEvent = RoutedEvent.Register<RoutedEventArgs>(
public static readonly RoutedEvent<RightTappedEventArgs> RightTappedEvent = RoutedEvent.Register<RightTappedEventArgs>(
"RightTapped",
RoutingStrategies.Bubble,
typeof(Gestures));
@ -24,7 +24,7 @@ namespace Avalonia.Input
public static readonly RoutedEvent<ScrollGestureEventArgs> ScrollGestureEvent =
RoutedEvent.Register<ScrollGestureEventArgs>(
"ScrollGesture", RoutingStrategies.Bubble, typeof(Gestures));
public static readonly RoutedEvent<ScrollGestureEventArgs> ScrollGestureEndedEvent =
RoutedEvent.Register<ScrollGestureEventArgs>(
"ScrollGestureEnded", RoutingStrategies.Bubble, typeof(Gestures));
@ -89,7 +89,7 @@ namespace Avalonia.Input
{
if (s_lastPress.TryGetTarget(out var target) && target == e.Source)
{
e.Source.RaiseEvent(new RoutedEventArgs(DoubleTappedEvent));
e.Source.RaiseEvent(new DoubleTappedEventArgs(e));
}
}
}
@ -105,8 +105,14 @@ namespace Avalonia.Input
{
if (e.InitialPressMouseButton == MouseButton.Left || e.InitialPressMouseButton == MouseButton.Right)
{
var et = e.InitialPressMouseButton != MouseButton.Right ? TappedEvent : RightTappedEvent;
e.Source.RaiseEvent(new RoutedEventArgs(et));
if (e.InitialPressMouseButton != MouseButton.Right)
{
e.Source.RaiseEvent(new RightTappedEventArgs(e));
}
else
{
e.Source.RaiseEvent(new TappedEventArgs(e));
}
}
}
}

8
src/Avalonia.Input/InputElement.cs

@ -176,12 +176,12 @@ namespace Avalonia.Input
/// <summary>
/// Defines the <see cref="Tapped"/> event.
/// </summary>
public static readonly RoutedEvent<RoutedEventArgs> TappedEvent = Gestures.TappedEvent;
public static readonly RoutedEvent<TappedEventArgs> TappedEvent = Gestures.TappedEvent;
/// <summary>
/// Defines the <see cref="DoubleTapped"/> event.
/// </summary>
public static readonly RoutedEvent<RoutedEventArgs> DoubleTappedEvent = Gestures.DoubleTappedEvent;
public static readonly RoutedEvent<DoubleTappedEventArgs> DoubleTappedEvent = Gestures.DoubleTappedEvent;
private bool _isEffectivelyEnabled = true;
private bool _isFocused;
@ -346,7 +346,7 @@ namespace Avalonia.Input
/// <summary>
/// Occurs when a tap gesture occurs on the control.
/// </summary>
public event EventHandler<RoutedEventArgs> Tapped
public event EventHandler<TappedEventArgs> Tapped
{
add { AddHandler(TappedEvent, value); }
remove { RemoveHandler(TappedEvent, value); }
@ -355,7 +355,7 @@ namespace Avalonia.Input
/// <summary>
/// Occurs when a double-tap gesture occurs on the control.
/// </summary>
public event EventHandler<RoutedEventArgs> DoubleTapped
public event EventHandler<DoubleTappedEventArgs> DoubleTapped
{
add { AddHandler(DoubleTappedEvent, value); }
remove { RemoveHandler(DoubleTappedEvent, value); }

44
src/Avalonia.Input/TappedGestureEventArgs.cs

@ -0,0 +1,44 @@
using Avalonia.Interactivity;
using Avalonia.VisualTree;
namespace Avalonia.Input
{
public class DoubleTappedEventArgs : RoutedEventArgs
{
private readonly PointerEventArgs lastPointerEventArgs;
public DoubleTappedEventArgs(PointerEventArgs lastPointerEventArgs)
: base(Gestures.DoubleTappedEvent)
{
this.lastPointerEventArgs = lastPointerEventArgs;
}
public Point GetPosition(IVisual? relativeTo) => lastPointerEventArgs.GetPosition(relativeTo);
}
public class TappedEventArgs : RoutedEventArgs
{
private readonly PointerEventArgs lastPointerEventArgs;
public TappedEventArgs(PointerEventArgs lastPointerEventArgs)
: base(Gestures.DoubleTappedEvent)
{
this.lastPointerEventArgs = lastPointerEventArgs;
}
public Point GetPosition(IVisual? relativeTo) => lastPointerEventArgs.GetPosition(relativeTo);
}
public class RightTappedEventArgs : RoutedEventArgs
{
private readonly PointerEventArgs lastPointerEventArgs;
public RightTappedEventArgs(PointerEventArgs lastPointerEventArgs)
: base(Gestures.DoubleTappedEvent)
{
this.lastPointerEventArgs = lastPointerEventArgs;
}
public Point GetPosition(IVisual? relativeTo) => lastPointerEventArgs.GetPosition(relativeTo);
}
}
Loading…
Cancel
Save