Skip to content

Commit

Permalink
Added device type to touch events (touch, mouse, pen) (#1191)
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael S. Scherotter authored Mar 30, 2020
1 parent aca03c2 commit 6890178
Showing 1 changed file with 19 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,16 @@ private void OnTouch(object sender, View.TouchEventArgs e)
var id = evt.GetPointerId(pointer);
var coords = scalePixels(evt.GetX(pointer), evt.GetY(pointer));

var toolType = evt.GetToolType(id);
var deviceType = GetDeviceType(toolType);

switch (evt.ActionMasked)
{
case MotionEventActions.Down:
case MotionEventActions.PointerDown:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Pressed, coords, true);
var args = new SKTouchEventArgs(id, SKTouchAction.Pressed, SKMouseButton.Left, deviceType, coords, true);

onTouchAction(args);
e.Handled = args.Handled;
break;
Expand All @@ -66,7 +70,7 @@ private void OnTouch(object sender, View.TouchEventArgs e)
id = evt.GetPointerId(pointer);
coords = scalePixels(evt.GetX(pointer), evt.GetY(pointer));

var args = new SKTouchEventArgs(id, SKTouchAction.Moved, coords, true);
var args = new SKTouchEventArgs(id, SKTouchAction.Moved, SKMouseButton.Left, deviceType, coords, true);
onTouchAction(args);
e.Handled = e.Handled || args.Handled;
}
Expand All @@ -76,20 +80,31 @@ private void OnTouch(object sender, View.TouchEventArgs e)
case MotionEventActions.Up:
case MotionEventActions.PointerUp:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Released, coords, false);
var args = new SKTouchEventArgs(id, SKTouchAction.Released, SKMouseButton.Left, deviceType, coords, false);
onTouchAction(args);
e.Handled = args.Handled;
break;
}

case MotionEventActions.Cancel:
{
var args = new SKTouchEventArgs(id, SKTouchAction.Cancelled, coords, false);
var args = new SKTouchEventArgs(id, SKTouchAction.Cancelled, SKMouseButton.Left, deviceType, coords, false);
onTouchAction(args);
e.Handled = args.Handled;
break;
}
}
}

private static SKTouchDeviceType GetDeviceType(MotionEventToolType toolType) =>
toolType switch
{
MotionEventToolType.Unknown => SKTouchDeviceType.Touch,
MotionEventToolType.Finger => SKTouchDeviceType.Touch,
MotionEventToolType.Stylus => SKTouchDeviceType.Pen,
MotionEventToolType.Eraser => SKTouchDeviceType.Pen,
MotionEventToolType.Mouse => SKTouchDeviceType.Mouse,
_ => SKTouchDeviceType.Touch,
};
}
}

0 comments on commit 6890178

Please sign in to comment.