diff --git a/samples/ControlCatalog/Pages/PointerCanvas.cs b/samples/ControlCatalog/Pages/PointerCanvas.cs
index 5843b13a0c..7d26da8603 100644
--- a/samples/ControlCatalog/Pages/PointerCanvas.cs
+++ b/samples/ControlCatalog/Pages/PointerCanvas.cs
@@ -174,9 +174,9 @@ Twist: {_lastProperties?.Twist}";
var lastPointer = e.GetCurrentPoint(this);
_lastProperties = lastPointer.Properties;
- if (_lastProperties.PointerUpdateKind != PointerUpdateKind.Other)
+ if (_lastProperties?.PointerUpdateKind != PointerUpdateKind.Other)
{
- _lastNonOtherUpdateKind = _lastProperties.PointerUpdateKind;
+ _lastNonOtherUpdateKind = _lastProperties?.PointerUpdateKind;
}
if (e.RoutedEvent == PointerReleasedEvent && e.Pointer.Type == PointerType.Touch)
diff --git a/src/Avalonia.Base/Input/PointerPoint.cs b/src/Avalonia.Base/Input/PointerPoint.cs
index 71145b5cb0..c51f286053 100644
--- a/src/Avalonia.Base/Input/PointerPoint.cs
+++ b/src/Avalonia.Base/Input/PointerPoint.cs
@@ -5,7 +5,7 @@ namespace Avalonia.Input
///
/// Provides basic properties for the input pointer associated with a single mouse, pen/stylus, or touch contact.
///
- public sealed class PointerPoint
+ public struct PointerPoint
{
public PointerPoint(IPointer pointer, Point position, PointerPointProperties properties)
{
@@ -33,47 +33,47 @@ namespace Avalonia.Input
///
/// Provides extended properties for a PointerPoint object.
///
- public sealed class PointerPointProperties
+ public struct PointerPointProperties
{
///
/// Gets a value that indicates whether the pointer input was triggered by the primary action mode of an input device.
///
- public bool IsLeftButtonPressed { get; }
+ public bool IsLeftButtonPressed { get; } = false;
///
/// Gets a value that indicates whether the pointer input was triggered by the tertiary action mode of an input device.
///
- public bool IsMiddleButtonPressed { get; }
+ public bool IsMiddleButtonPressed { get; } = false;
///
/// Gets a value that indicates whether the pointer input was triggered by the secondary action mode (if supported) of an input device.
///
- public bool IsRightButtonPressed { get; }
+ public bool IsRightButtonPressed { get; } = false;
///
/// Gets a value that indicates whether the pointer input was triggered by the first extended mouse button (XButton1).
///
- public bool IsXButton1Pressed { get; }
+ public bool IsXButton1Pressed { get; } = false;
///
/// Gets a value that indicates whether the pointer input was triggered by the second extended mouse button (XButton2).
///
- public bool IsXButton2Pressed { get; }
+ public bool IsXButton2Pressed { get; } = false;
///
/// Gets a value that indicates whether the barrel button of the pen/stylus device is pressed.
///
- public bool IsBarrelButtonPressed { get; }
+ public bool IsBarrelButtonPressed { get; } = false;
///
/// Gets a value that indicates whether the input is from a pen eraser.
///
- public bool IsEraser { get; }
+ public bool IsEraser { get; } = false;
///
/// Gets a value that indicates whether the digitizer pen is inverted.
///
- public bool IsInverted { get; }
+ public bool IsInverted { get; } = false;
///
/// Gets the clockwise rotation in degrees of a pen device around its own major axis (such as when the user spins the pen in their fingers).
@@ -81,7 +81,7 @@ namespace Avalonia.Input
///
/// A value between 0.0 and 359.0 in degrees of rotation. The default value is 0.0.
///
- public float Twist { get; }
+ public float Twist { get; } = 0.0F;
///
/// Gets a value that indicates the force that the pointer device (typically a pen/stylus) exerts on the surface of the digitizer.
@@ -97,7 +97,7 @@ namespace Avalonia.Input
///
/// The value is 0.0 when the finger or pen is perpendicular to the digitizer surface, between 0.0 and 90.0 when tilted to the right of perpendicular, and between 0.0 and -90.0 when tilted to the left of perpendicular. The default value is 0.0.
///
- public float XTilt { get; }
+ public float XTilt { get; } = 0.0F;
///
/// Gets the plane angle between the X-Z plane and the plane that contains the X axis and the axis of the input device (typically a pen/stylus).
@@ -105,14 +105,14 @@ namespace Avalonia.Input
///
/// The value is 0.0 when the finger or pen is perpendicular to the digitizer surface, between 0.0 and 90.0 when tilted towards the user, and between 0.0 and -90.0 when tilted away from the user. The default value is 0.0.
///
- public float YTilt { get; }
+ public float YTilt { get; } = 0.0F;
///
/// Gets the kind of pointer state change.
///
- public PointerUpdateKind PointerUpdateKind { get; }
+ public PointerUpdateKind PointerUpdateKind { get; } = PointerUpdateKind.LeftButtonPressed;
- private PointerPointProperties()
+ public PointerPointProperties()
{
}