Explorar o código

Added `Gestures.RightTapped`.

Steven Kirk %!s(int64=6) %!d(string=hai) anos
pai
achega
d0a6f48015

+ 7 - 4
src/Avalonia.Input/Gestures.cs

@@ -18,6 +18,11 @@ namespace Avalonia.Input
             RoutingStrategies.Bubble,
             typeof(Gestures));
 
+        public static readonly RoutedEvent<RoutedEventArgs> RightTappedEvent = RoutedEvent.Register<RoutedEventArgs>(
+            "RightTapped",
+            RoutingStrategies.Bubble,
+            typeof(Gestures));
+
         public static readonly RoutedEvent<ScrollGestureEventArgs> ScrollGestureEvent =
             RoutedEvent.Register<ScrollGestureEventArgs>(
                 "ScrollGesture", RoutingStrategies.Bubble, typeof(Gestures));
@@ -62,10 +67,8 @@ namespace Avalonia.Input
 
                 if (s_lastPress?.IsAlive == true && s_lastPress.Target == e.Source)
                 {
-                    if (e.MouseButton != MouseButton.Right)
-                    {
-                        ((IInteractive)s_lastPress.Target).RaiseEvent(new RoutedEventArgs(TappedEvent));
-                    }
+                    var et = e.MouseButton != MouseButton.Right ? TappedEvent : RightTappedEvent;
+                    ((IInteractive)s_lastPress.Target).RaiseEvent(new RoutedEventArgs(et));
                 }
             }
         }

+ 17 - 0
tests/Avalonia.Input.UnitTests/GesturesTests.cs

@@ -81,6 +81,23 @@ namespace Avalonia.Interactivity.UnitTests
             Assert.False(raised);
         }
 
+        [Fact]
+        public void RightTapped_Should_Be_Raised_For_Right_Button()
+        {
+            Border border = new Border();
+            var decorator = new Decorator
+            {
+                Child = border
+            };
+            var raised = false;
+
+            decorator.AddHandler(Gestures.RightTappedEvent, (s, e) => raised = true);
+
+            _mouse.Click(border, MouseButton.Right);
+
+            Assert.True(raised);
+        }
+
         [Fact]
         public void DoubleTapped_Should_Follow_Pointer_Pressed_Released_Pressed()
         {