From ce42f829a7d404c70a75e3192ce106ab54b3e613 Mon Sep 17 00:00:00 2001 From: Takoooooo Date: Wed, 17 Aug 2022 18:00:56 +0300 Subject: [PATCH] Make PointerPoint and PointerPointProperties to be a struct. --- samples/ControlCatalog/Pages/PointerCanvas.cs | 4 +-- src/Avalonia.Base/Input/PointerPoint.cs | 30 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) 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() { }