Browse Source

[OSX] Trackpad Gestures - code refactoring

pull/6564/head
Sergey Mikolaitis 5 years ago
parent
commit
17ec020239
  1. 12
      src/Avalonia.Input/Gestures.cs
  2. 85
      src/Avalonia.Input/InputElement.cs
  3. 6
      src/Avalonia.Input/MouseDevice.cs
  4. 6
      src/Avalonia.Input/PointerTouchPadGestureMagnifyEventArgs.cs
  5. 6
      src/Avalonia.Input/PointerTouchPadGestureRotateEventArgs.cs
  6. 6
      src/Avalonia.Input/PointerTouchPadGestureSwipeEventArgs.cs

12
src/Avalonia.Input/Gestures.cs

@ -28,6 +28,18 @@ namespace Avalonia.Input
public static readonly RoutedEvent<ScrollGestureEventArgs> ScrollGestureEndedEvent =
RoutedEvent.Register<ScrollGestureEventArgs>(
"ScrollGestureEnded", RoutingStrategies.Bubble, typeof(Gestures));
public static readonly RoutedEvent<PointerTouchPadGestureMagnifyEventArgs> PointerTouchPadGestureMagnifyEvent =
RoutedEvent.Register<PointerTouchPadGestureMagnifyEventArgs>(
"PointerMagnifyGesture", RoutingStrategies.Bubble, typeof(Gestures));
public static readonly RoutedEvent<PointerTouchPadGestureRotateEventArgs> PointerTouchPadGestureRotateEvent =
RoutedEvent.Register<PointerTouchPadGestureRotateEventArgs>(
"PointerRotateGesture", RoutingStrategies.Bubble, typeof(Gestures));
public static readonly RoutedEvent<PointerTouchPadGestureSwipeEventArgs> PointerTouchPadGestureSwipeEvent =
RoutedEvent.Register<PointerTouchPadGestureSwipeEventArgs>(
"PointerSwipeGesture", RoutingStrategies.Bubble, typeof(Gestures));
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
private static readonly WeakReference<IInteractive> s_lastPress = new WeakReference<IInteractive>(null);

85
src/Avalonia.Input/InputElement.cs

@ -186,40 +186,34 @@ namespace Avalonia.Input
RoutedEvent.Register<InputElement, PointerWheelEventArgs>(
"PointerWheelChanged",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
/// <summary>
/// Defines the <see cref="PointerMagnifyGesture"/> event.
/// Defines the <see cref="Tapped"/> event.
/// </summary>
public static readonly RoutedEvent<PointerMagnifyGestureEventArgs> PointerMagnifyGestureEvent =
RoutedEvent.Register<InputElement, PointerMagnifyGestureEventArgs>(
"PointerMagnifyGesture",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
public static readonly RoutedEvent<TappedEventArgs> TappedEvent = Gestures.TappedEvent;
/// <summary>
/// Defines the <see cref="PointerRotateGesture"/> event.
/// Defines the <see cref="DoubleTapped"/> event.
/// </summary>
public static readonly RoutedEvent<PointerRotateGestureEventArgs> PointerRotateGestureEvent =
RoutedEvent.Register<InputElement, PointerRotateGestureEventArgs>(
"PointerRotateGesture",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
public static readonly RoutedEvent<TappedEventArgs> DoubleTappedEvent = Gestures.DoubleTappedEvent;
/// <summary>
/// Defines the <see cref="PointerSwipeGesture"/> event.
/// Defines the <see cref="PointerTouchPadGestureMagnify"/> event.
/// </summary>
public static readonly RoutedEvent<PointerSwipeGestureEventArgs> PointerSwipeGestureEvent =
RoutedEvent.Register<InputElement, PointerSwipeGestureEventArgs>(
"PointerSwipeGesture",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
public static readonly RoutedEvent<PointerTouchPadGestureMagnifyEventArgs> PointerTouchPadGestureMagnifyEvent
= Gestures.PointerTouchPadGestureMagnifyEvent;
/// <summary>
/// Defines the <see cref="Tapped"/> event.
/// Defines the <see cref="PointerTouchPadGestureRotate"/> event.
/// </summary>
public static readonly RoutedEvent<TappedEventArgs> TappedEvent = Gestures.TappedEvent;
public static readonly RoutedEvent<PointerTouchPadGestureRotateEventArgs> PointerTouchPadGestureRotateEvent
= Gestures.PointerTouchPadGestureRotateEvent;
/// <summary>
/// Defines the <see cref="DoubleTapped"/> event.
/// Defines the <see cref="PointerTouchPadGestureSwipe"/> event.
/// </summary>
public static readonly RoutedEvent<TappedEventArgs> DoubleTappedEvent = Gestures.DoubleTappedEvent;
public static readonly RoutedEvent<PointerTouchPadGestureSwipeEventArgs> PointerTouchPadGestureSwipeEvent
= Gestures.PointerTouchPadGestureSwipeEvent;
private bool _isEffectivelyEnabled = true;
private bool _isFocused;
@ -247,9 +241,6 @@ namespace Avalonia.Input
PointerReleasedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerReleased(e));
PointerCaptureLostEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerCaptureLost(e));
PointerWheelChangedEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerWheelChanged(e));
PointerMagnifyGestureEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerMagnifyGesture(e));
PointerRotateGestureEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerRotateGesture(e));
PointerSwipeGestureEvent.AddClassHandler<InputElement>((x, e) => x.OnPointerSwipeGesture(e));
}
public InputElement()
@ -388,30 +379,30 @@ namespace Avalonia.Input
/// Occurs when the user uses magnify (Pitch to Zoom) gesture on a trackpad and pointer is over the control.
/// Works only on macOS.
/// </summary>
public event EventHandler<PointerMagnifyGestureEventArgs> PointerMagnifyGesture
public event EventHandler<PointerTouchPadGestureMagnifyEventArgs> PointerTouchPadGestureMagnify
{
add { AddHandler(PointerMagnifyGestureEvent, value); }
remove { RemoveHandler(PointerMagnifyGestureEvent, value); }
add { AddHandler(PointerTouchPadGestureMagnifyEvent, value); }
remove { RemoveHandler(PointerTouchPadGestureMagnifyEvent, value); }
}
/// <summary>
/// Occurs when the user uses rotate gesture on a trackpad and pointer is over the control.
/// Works only on macOS.
/// </summary>
public event EventHandler<PointerRotateGestureEventArgs> PointerRotateGesture
public event EventHandler<PointerTouchPadGestureRotateEventArgs> PointerTouchPadGestureRotate
{
add { AddHandler(PointerRotateGestureEvent, value); }
remove { RemoveHandler(PointerRotateGestureEvent, value); }
add { AddHandler(PointerTouchPadGestureRotateEvent, value); }
remove { RemoveHandler(PointerTouchPadGestureRotateEvent, value); }
}
/// <summary>
/// Occurs when the user uses swipe gesture on a trackpad and pointer is over the control.
/// Works only on macOS.
/// </summary>
public event EventHandler<PointerSwipeGestureEventArgs> PointerSwipeGesture
public event EventHandler<PointerTouchPadGestureSwipeEventArgs> PointerTouchPadGestureSwipe
{
add { AddHandler(PointerSwipeGestureEvent, value); }
remove { RemoveHandler(PointerSwipeGestureEvent, value); }
add { AddHandler(PointerTouchPadGestureSwipeEvent, value); }
remove { RemoveHandler(PointerTouchPadGestureSwipeEvent, value); }
}
/// <summary>
@ -674,30 +665,6 @@ namespace Avalonia.Input
protected virtual void OnPointerWheelChanged(PointerWheelEventArgs e)
{
}
/// <summary>
/// Called before the <see cref="PointerMagnifyGesture"/> trackpad event occurs.
/// </summary>
/// <param name="e">The event args.</param>
protected virtual void OnPointerMagnifyGesture(PointerMagnifyGestureEventArgs e)
{
}
/// <summary>
/// Called before the <see cref="PointerRotateGesture"/> trackpad event occurs.
/// </summary>
/// <param name="e">The event args.</param>
protected virtual void OnPointerRotateGesture(PointerRotateGestureEventArgs e)
{
}
/// <summary>
/// Called before the <see cref="PointerSwipeGesture"/> trackpad event occurs.
/// </summary>
/// <param name="e">The event args.</param>
protected virtual void OnPointerSwipeGesture(PointerSwipeGestureEventArgs e)
{
}
protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
{

6
src/Avalonia.Input/MouseDevice.cs

@ -355,7 +355,7 @@ namespace Avalonia.Input
if (hit != null)
{
var source = GetSource(hit);
var e = new PointerMagnifyGestureEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta.X);
var e = new PointerTouchPadGestureMagnifyEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta.X);
source?.RaiseEvent(e);
return e.Handled;
@ -376,7 +376,7 @@ namespace Avalonia.Input
if (hit != null)
{
var source = GetSource(hit);
var e = new PointerRotateGestureEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta.X);
var e = new PointerTouchPadGestureRotateEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta.X);
source?.RaiseEvent(e);
return e.Handled;
@ -397,7 +397,7 @@ namespace Avalonia.Input
if (hit != null)
{
var source = GetSource(hit);
var e = new PointerSwipeGestureEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta);
var e = new PointerTouchPadGestureSwipeEventArgs(source, _pointer, root, p, timestamp, props, inputModifiers, delta);
source?.RaiseEvent(e);
return e.Handled;

6
src/Avalonia.Input/PointerRotateGestureEventArgs.cs → src/Avalonia.Input/PointerTouchPadGestureMagnifyEventArgs.cs

@ -3,14 +3,14 @@ using Avalonia.VisualTree;
namespace Avalonia.Input
{
public class PointerRotateGestureEventArgs : PointerEventArgs
public class PointerTouchPadGestureMagnifyEventArgs : PointerEventArgs
{
public double Delta { get; set; }
public PointerRotateGestureEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
public PointerTouchPadGestureMagnifyEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
Point rootVisualPosition, ulong timestamp,
PointerPointProperties properties, KeyModifiers modifiers, double delta)
: base(InputElement.PointerRotateGestureEvent, source, pointer, rootVisual, rootVisualPosition,
: base(InputElement.PointerTouchPadGestureMagnifyEvent, source, pointer, rootVisual, rootVisualPosition,
timestamp, properties, modifiers)
{
Delta = delta;

6
src/Avalonia.Input/PointerMagnifyGestureEventArgs.cs → src/Avalonia.Input/PointerTouchPadGestureRotateEventArgs.cs

@ -3,14 +3,14 @@ using Avalonia.VisualTree;
namespace Avalonia.Input
{
public class PointerMagnifyGestureEventArgs : PointerEventArgs
public class PointerTouchPadGestureRotateEventArgs : PointerEventArgs
{
public double Delta { get; set; }
public PointerMagnifyGestureEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
public PointerTouchPadGestureRotateEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
Point rootVisualPosition, ulong timestamp,
PointerPointProperties properties, KeyModifiers modifiers, double delta)
: base(InputElement.PointerMagnifyGestureEvent, source, pointer, rootVisual, rootVisualPosition,
: base(InputElement.PointerTouchPadGestureRotateEvent, source, pointer, rootVisual, rootVisualPosition,
timestamp, properties, modifiers)
{
Delta = delta;

6
src/Avalonia.Input/PointerSwipeGestureEventArgs.cs → src/Avalonia.Input/PointerTouchPadGestureSwipeEventArgs.cs

@ -3,14 +3,14 @@ using Avalonia.VisualTree;
namespace Avalonia.Input
{
public class PointerSwipeGestureEventArgs : PointerEventArgs
public class PointerTouchPadGestureSwipeEventArgs : PointerEventArgs
{
public Vector Delta { get; set; }
public PointerSwipeGestureEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
public PointerTouchPadGestureSwipeEventArgs(IInteractive source, IPointer pointer, IVisual rootVisual,
Point rootVisualPosition, ulong timestamp,
PointerPointProperties properties, KeyModifiers modifiers, Vector delta)
: base(InputElement.PointerSwipeGestureEvent, source, pointer, rootVisual, rootVisualPosition,
: base(InputElement.PointerTouchPadGestureSwipeEvent, source, pointer, rootVisual, rootVisualPosition,
timestamp, properties, modifiers)
{
Delta = delta;
Loading…
Cancel
Save