|
|
@ -1,3 +1,4 @@ |
|
|
|
|
|
using System; |
|
|
using System.Collections; |
|
|
using System.Collections; |
|
|
using System.Collections.Generic; |
|
|
using System.Collections.Generic; |
|
|
using Avalonia.Controls; |
|
|
using Avalonia.Controls; |
|
|
@ -24,8 +25,14 @@ namespace Avalonia.Input.GestureRecognizers |
|
|
_recognizers = new List<GestureRecognizer>(); |
|
|
_recognizers = new List<GestureRecognizer>(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(recognizer.GestureRecognizerCollection != null && recognizer.GestureRecognizerCollection != this) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new InvalidOperationException("The gesture recognizer has already been added to a gesture recognizer collection"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
_recognizers.Add(recognizer); |
|
|
_recognizers.Add(recognizer); |
|
|
recognizer.Target = _inputElement; |
|
|
recognizer.Target = _inputElement; |
|
|
|
|
|
recognizer.GestureRecognizerCollection = this; |
|
|
|
|
|
|
|
|
// Hacks to make bindings work
|
|
|
// Hacks to make bindings work
|
|
|
|
|
|
|
|
|
@ -59,6 +66,20 @@ namespace Avalonia.Input.GestureRecognizers |
|
|
return e.Handled; |
|
|
return e.Handled; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
internal void HandleCaptureLost(IPointer pointer) |
|
|
|
|
|
{ |
|
|
|
|
|
if (_recognizers == null || pointer is not Pointer p) |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
foreach (var r in _recognizers) |
|
|
|
|
|
{ |
|
|
|
|
|
if (p.CapturedGestureRecognizer == r) |
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
|
|
r.PointerCaptureLostInternal(pointer); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
internal bool HandlePointerReleased(PointerReleasedEventArgs e) |
|
|
internal bool HandlePointerReleased(PointerReleasedEventArgs e) |
|
|
{ |
|
|
{ |
|
|
if (_recognizers == null) |
|
|
if (_recognizers == null) |
|
|
|