Browse Source

Always notify gesture recognizers about the loss of pointer capture

pull/3594/head
Nikita Tsukanov 6 years ago
parent
commit
2bef4dc540
  1. 9
      src/Avalonia.Input/GestureRecognizers/GestureRecognizerCollection.cs
  2. 2
      src/Avalonia.Input/GestureRecognizers/IGestureRecognizer.cs
  3. 4
      src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs

9
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);
}
}
}

2
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

4
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()

Loading…
Cancel
Save