Browse Source

fix touch issues

Stylus
Sergey Mikolaytis 5 years ago
parent
commit
5127006d1b
  1. 2
      src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs
  2. 2
      src/Avalonia.Input/PointerPoint.cs
  3. 7
      src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs

2
src/Avalonia.Input/GestureRecognizers/ScrollGestureRecognizer.cs

@ -101,7 +101,7 @@ namespace Avalonia.Input.GestureRecognizers
if (_scrolling)
{
var vector = _trackedRootPoint - rootPoint;
var elapsed = _lastMoveTimestamp.HasValue ?
var elapsed = _lastMoveTimestamp.HasValue && _lastMoveTimestamp < e.Timestamp ?
TimeSpan.FromMilliseconds(e.Timestamp - _lastMoveTimestamp.Value) :
TimeSpan.Zero;

2
src/Avalonia.Input/PointerPoint.cs

@ -45,8 +45,6 @@ namespace Avalonia.Input
IsRightButtonPressed = modifiers.HasAllFlags(RawInputModifiers.RightMouseButton);
IsXButton1Pressed = modifiers.HasAllFlags(RawInputModifiers.XButton1MouseButton);
IsXButton2Pressed = modifiers.HasAllFlags(RawInputModifiers.XButton2MouseButton);
IsBarrelButtonPressed = modifiers.HasAllFlags(RawInputModifiers.BarrelPenButton);
IsEraser = modifiers.HasAllFlags(RawInputModifiers.PenEraser);
// The underlying input source might be reporting the previous state,
// so make sure that we reflect the current state

7
src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs

@ -488,6 +488,10 @@ namespace Avalonia.Win32
case WindowsMessage.WM_POINTERLEAVE:
{
GetDevicePointerInfo(wParam, out var device, out var info, ref timestamp);
if (device is TouchDevice)
{
break;
}
var point = PointToClient(new PixelPoint(info.ptPixelLocationX, info.ptPixelLocationY));
var modifiers = GetInputModifiers(info.dwKeyStates);
@ -798,8 +802,7 @@ namespace Avalonia.Win32
case PointerInputType.PT_PEN:
return ToEventType(info.ButtonChangeType);
case PointerInputType.PT_TOUCH:
if (info.pointerFlags.HasFlag(PointerFlags.POINTER_FLAG_CANCELED) ||
!info.pointerFlags.HasFlag(PointerFlags.POINTER_FLAG_CONFIDENCE))
if (info.pointerFlags.HasFlag(PointerFlags.POINTER_FLAG_CANCELED))
{
return RawPointerEventType.TouchCancel;
}

Loading…
Cancel
Save