|
|
|
@ -10,6 +10,17 @@ namespace Avalonia.Controls.Mixins |
|
|
|
/// </summary>
|
|
|
|
public static class PressedMixin |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="PressedMixin"/> class.
|
|
|
|
/// </summary>
|
|
|
|
/// <typeparam name="TControl">The control type.</typeparam>
|
|
|
|
public static void Attach<TControl>() where TControl : Control |
|
|
|
{ |
|
|
|
InputElement.PointerPressedEvent.AddClassHandler<TControl>((x, e) => HandlePointerPressed(x, e), RoutingStrategies.Tunnel); |
|
|
|
InputElement.PointerReleasedEvent.AddClassHandler<TControl>((x, e) => HandlePointerReleased(x), RoutingStrategies.Tunnel); |
|
|
|
InputElement.PointerCaptureLostEvent.AddClassHandler<TControl>((x, e) => HandlePointerReleased(x), RoutingStrategies.Tunnel); |
|
|
|
} |
|
|
|
|
|
|
|
private static void HandlePointerPressed<TControl>(TControl sender, PointerPressedEventArgs e) where TControl : Control |
|
|
|
{ |
|
|
|
if (e.GetCurrentPoint(sender).Properties.IsLeftButtonPressed) |
|
|
|
@ -22,12 +33,5 @@ namespace Avalonia.Controls.Mixins |
|
|
|
{ |
|
|
|
((IPseudoClasses)sender.Classes).Set(":pressed", false); |
|
|
|
} |
|
|
|
|
|
|
|
public static void Attach<TControl>() where TControl : Control |
|
|
|
{ |
|
|
|
InputElement.PointerPressedEvent.AddClassHandler<TControl>((x, e) => HandlePointerPressed(x, e), RoutingStrategies.Tunnel, true); |
|
|
|
InputElement.PointerReleasedEvent.AddClassHandler<TControl>((x, e) => HandlePointerReleased(x), RoutingStrategies.Tunnel, true); |
|
|
|
InputElement.PointerCaptureLostEvent.AddClassHandler<TControl>((x, e) => HandlePointerReleased(x), RoutingStrategies.Tunnel, true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|