diff --git a/src/Avalonia.Input/GestureRecognizers/GestureRecognizerCollection.cs b/src/Avalonia.Input/GestureRecognizers/GestureRecognizerCollection.cs index 91b224e65a..112abb1a4e 100644 --- a/src/Avalonia.Input/GestureRecognizers/GestureRecognizerCollection.cs +++ b/src/Avalonia.Input/GestureRecognizers/GestureRecognizerCollection.cs @@ -111,9 +111,7 @@ namespace Avalonia.Input.GestureRecognizers _pointerGrabs.Remove(e.Pointer); foreach (var r in _recognizers) { - if(e.Handled) - break; - r.PointerCaptureLost(e); + r.PointerCaptureLost(e.Pointer); } } @@ -121,6 +119,11 @@ namespace Avalonia.Input.GestureRecognizers { pointer.Capture(_inputElement); _pointerGrabs[pointer] = recognizer; + foreach (var r in _recognizers) + { + if (r != recognizer) + r.PointerCaptureLost(pointer); + } } } diff --git a/src/Avalonia.Input/GestureRecognizers/IGestureRecognizer.cs b/src/Avalonia.Input/GestureRecognizers/IGestureRecognizer.cs index b8ba9e529c..c1d9ae5304 100644 --- a/src/Avalonia.Input/GestureRecognizers/IGestureRecognizer.cs +++ b/src/Avalonia.Input/GestureRecognizers/IGestureRecognizer.cs @@ -6,7 +6,7 @@ namespace Avalonia.Input.GestureRecognizers void PointerPressed(PointerPressedEventArgs e); void PointerReleased(PointerReleasedEventArgs e); void PointerMoved(PointerEventArgs e); - void PointerCaptureLost(PointerCaptureLostEventArgs e); + void PointerCaptureLost(IPointer pointer); } public interface IGestureRecognizerActionsDispatcher diff --git a/src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs b/src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs index a582fae8b5..e022401c8e 100644 --- a/src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs +++ b/src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs @@ -116,9 +116,9 @@ namespace Avalonia.Input.GestureRecognizers } } - public void PointerCaptureLost(PointerCaptureLostEventArgs e) + public void PointerCaptureLost(IPointer pointer) { - if (e.Pointer == _tracking) EndGesture(); + if (pointer == _tracking) EndGesture(); } void EndGesture()