diff --git a/src/Avalonia.Base/Input/Cursor.cs b/src/Avalonia.Base/Input/Cursor.cs index 122838f682..98c4258a90 100644 --- a/src/Avalonia.Base/Input/Cursor.cs +++ b/src/Avalonia.Base/Input/Cursor.cs @@ -32,10 +32,7 @@ namespace Avalonia.Input DragCopy, DragLink, None, - - [Obsolete("Use BottomSide")] - BottomSize = BottomSide - + // Not available in GTK directly, see http://www.pixelbeat.org/programming/x_cursors/ // We might enable them later, preferably, by loading pixmax directly from theme with fallback image // SizeNorthWestSouthEast, diff --git a/src/Avalonia.Base/Input/DragEventArgs.cs b/src/Avalonia.Base/Input/DragEventArgs.cs index 22ca8358ff..0e613c0f21 100644 --- a/src/Avalonia.Base/Input/DragEventArgs.cs +++ b/src/Avalonia.Base/Input/DragEventArgs.cs @@ -13,9 +13,6 @@ namespace Avalonia.Input public IDataObject Data { get; private set; } - [Obsolete("Use KeyModifiers")] - public InputModifiers Modifiers { get; private set; } - public KeyModifiers KeyModifiers { get; private set; } public Point GetPosition(IVisual relativeTo) @@ -35,17 +32,6 @@ namespace Avalonia.Input return point; } - [Obsolete("Use constructor taking KeyModifiers")] - public DragEventArgs(RoutedEvent routedEvent, IDataObject data, Interactive target, Point targetLocation, InputModifiers modifiers) - : base(routedEvent) - { - Data = data; - _target = target; - _targetLocation = targetLocation; - Modifiers = modifiers; - KeyModifiers = (KeyModifiers)(((int)modifiers) & 0xF); - } - public DragEventArgs(RoutedEvent routedEvent, IDataObject data, Interactive target, Point targetLocation, KeyModifiers keyModifiers) : base(routedEvent) { @@ -53,10 +39,6 @@ namespace Avalonia.Input _target = target; _targetLocation = targetLocation; KeyModifiers = keyModifiers; -#pragma warning disable CS0618 // Type or member is obsolete - Modifiers = (InputModifiers)keyModifiers; -#pragma warning restore CS0618 // Type or member is obsolete } - } } diff --git a/src/Avalonia.Base/Input/GotFocusEventArgs.cs b/src/Avalonia.Base/Input/GotFocusEventArgs.cs index 9d958823fe..5cce138ee0 100644 --- a/src/Avalonia.Base/Input/GotFocusEventArgs.cs +++ b/src/Avalonia.Base/Input/GotFocusEventArgs.cs @@ -1,4 +1,3 @@ -using System; using Avalonia.Interactivity; namespace Avalonia.Input @@ -13,16 +12,6 @@ namespace Avalonia.Input /// public NavigationMethod NavigationMethod { get; set; } - /// - /// Gets or sets any input modifiers active at the time of focus. - /// - [Obsolete("Use KeyModifiers")] - public InputModifiers InputModifiers - { - get => (InputModifiers)KeyModifiers; - set => KeyModifiers = (KeyModifiers)((int)value & 0xF); - } - /// /// Gets or sets any key modifiers active at the time of focus. /// diff --git a/src/Avalonia.Base/Input/IKeyboardDevice.cs b/src/Avalonia.Base/Input/IKeyboardDevice.cs index 80aebc02bc..0b7b5aaecc 100644 --- a/src/Avalonia.Base/Input/IKeyboardDevice.cs +++ b/src/Avalonia.Base/Input/IKeyboardDevice.cs @@ -4,19 +4,6 @@ using Avalonia.Metadata; namespace Avalonia.Input { - [Flags, Obsolete("Use KeyModifiers and PointerPointProperties")] - public enum InputModifiers - { - None = 0, - Alt = 1, - Control = 2, - Shift = 4, - Windows = 8, - LeftMouseButton = 16, - RightMouseButton = 32, - MiddleMouseButton = 64 - } - [Flags] public enum KeyModifiers { diff --git a/src/Avalonia.Base/Input/IMouseDevice.cs b/src/Avalonia.Base/Input/IMouseDevice.cs index 2d66397d63..00c436bf21 100644 --- a/src/Avalonia.Base/Input/IMouseDevice.cs +++ b/src/Avalonia.Base/Input/IMouseDevice.cs @@ -1,4 +1,3 @@ -using System; using Avalonia.Metadata; namespace Avalonia.Input @@ -9,16 +8,5 @@ namespace Avalonia.Input [NotClientImplementable] public interface IMouseDevice : IPointerDevice { - /// - /// Gets the mouse position, in screen coordinates. - /// - [Obsolete("Use PointerEventArgs.GetPosition")] - PixelPoint Position { get; } - - [Obsolete] - void TopLevelClosed(IInputRoot root); - - [Obsolete] - void SceneInvalidated(IInputRoot root, Rect rect); } } diff --git a/src/Avalonia.Base/Input/IPointerDevice.cs b/src/Avalonia.Base/Input/IPointerDevice.cs index 0993835feb..e0aebda9c5 100644 --- a/src/Avalonia.Base/Input/IPointerDevice.cs +++ b/src/Avalonia.Base/Input/IPointerDevice.cs @@ -1,5 +1,3 @@ -using System; -using Avalonia.VisualTree; using Avalonia.Input.Raw; using Avalonia.Metadata; @@ -8,18 +6,6 @@ namespace Avalonia.Input [NotClientImplementable] public interface IPointerDevice : IInputDevice { - /// - [Obsolete("Use IPointer")] - IInputElement? Captured { get; } - - /// - [Obsolete("Use IPointer")] - void Capture(IInputElement? control); - - /// - [Obsolete("Use PointerEventArgs.GetPosition")] - Point GetPosition(IVisual relativeTo); - /// /// Gets a pointer for specific event args. /// diff --git a/src/Avalonia.Base/Input/KeyEventArgs.cs b/src/Avalonia.Base/Input/KeyEventArgs.cs index 67cd5a520a..b8291e9096 100644 --- a/src/Avalonia.Base/Input/KeyEventArgs.cs +++ b/src/Avalonia.Base/Input/KeyEventArgs.cs @@ -9,8 +9,6 @@ namespace Avalonia.Input public Key Key { get; set; } - [Obsolete("Use KeyModifiers")] - public InputModifiers Modifiers => (InputModifiers)KeyModifiers; public KeyModifiers KeyModifiers { get; set; } } } diff --git a/src/Avalonia.Base/Input/KeyGesture.cs b/src/Avalonia.Base/Input/KeyGesture.cs index 3b7a828b86..e79e9341a9 100644 --- a/src/Avalonia.Base/Input/KeyGesture.cs +++ b/src/Avalonia.Base/Input/KeyGesture.cs @@ -15,13 +15,6 @@ namespace Avalonia.Input { "+", Key.OemPlus }, { "-", Key.OemMinus }, { ".", Key.OemPeriod }, { ",", Key.OemComma } }; - [Obsolete("Use constructor taking KeyModifiers")] - public KeyGesture(Key key, InputModifiers modifiers) - { - Key = key; - KeyModifiers = (KeyModifiers)(((int)modifiers) & 0xf); - } - public KeyGesture(Key key, KeyModifiers modifiers = KeyModifiers.None) { Key = key; @@ -63,10 +56,7 @@ namespace Avalonia.Input } public Key Key { get; } - - [Obsolete("Use KeyModifiers")] - public InputModifiers Modifiers => (InputModifiers)KeyModifiers; - + public KeyModifiers KeyModifiers { get; } public static KeyGesture Parse(string gesture) diff --git a/src/Avalonia.Base/Input/MouseDevice.cs b/src/Avalonia.Base/Input/MouseDevice.cs index 5f8ab24b79..055c9cf1fd 100644 --- a/src/Avalonia.Base/Input/MouseDevice.cs +++ b/src/Avalonia.Base/Input/MouseDevice.cs @@ -21,7 +21,6 @@ namespace Avalonia.Input private readonly Pointer _pointer; private bool _disposed; - private PixelPoint? _position; private MouseButton _lastMouseDownButton; public MouseDevice(Pointer? pointer = null) @@ -29,43 +28,6 @@ namespace Avalonia.Input _pointer = pointer ?? new Pointer(Pointer.GetNextFreeId(), PointerType.Mouse, true); } - [Obsolete("Use IPointer instead")] - public IInputElement? Captured => _pointer.Captured; - - [Obsolete("Use events instead")] - public PixelPoint Position - { - get => _position ?? new PixelPoint(-1, -1); - protected set => _position = value; - } - - [Obsolete("Use IPointer instead")] - public void Capture(IInputElement? control) - { - _pointer.Capture(control); - } - - /// - /// Gets the mouse position relative to a control. - /// - /// The control. - /// The mouse position in the control's coordinates. - public Point GetPosition(IVisual relativeTo) - { - relativeTo = relativeTo ?? throw new ArgumentNullException(nameof(relativeTo)); - - if (relativeTo.VisualRoot == null) - { - throw new InvalidOperationException("Control is not attached to visual tree."); - } - -#pragma warning disable CS0618 // Type or member is obsolete - var rootPoint = relativeTo.VisualRoot.PointToClient(Position); -#pragma warning restore CS0618 // Type or member is obsolete - var transform = relativeTo.VisualRoot.TransformToVisual(relativeTo); - return rootPoint * transform!.Value; - } - public void ProcessRawEvent(RawInputEventArgs e) { if (!e.Handled && e is RawPointerEventArgs margs) @@ -96,7 +58,6 @@ namespace Avalonia.Input if(mouse._disposed) return; - _position = e.Root.PointToScreen(e.Position); var props = CreateProperties(e); var keyModifiers = e.InputModifiers.ToKeyModifiers(); switch (e.Type) @@ -145,7 +106,6 @@ namespace Avalonia.Input private void LeaveWindow() { - _position = null; } PointerPointProperties CreateProperties(RawPointerEventArgs args) @@ -324,19 +284,7 @@ namespace Avalonia.Input _disposed = true; _pointer?.Dispose(); } - - [Obsolete] - public void TopLevelClosed(IInputRoot root) - { - // no-op - } - - [Obsolete] - public void SceneInvalidated(IInputRoot root, Rect rect) - { - // no-op - } - + public IPointer? TryGetPointer(RawPointerEventArgs ev) { return _pointer; diff --git a/src/Avalonia.Base/Input/PenDevice.cs b/src/Avalonia.Base/Input/PenDevice.cs index d22b48562c..f5f0e90a45 100644 --- a/src/Avalonia.Base/Input/PenDevice.cs +++ b/src/Avalonia.Base/Input/PenDevice.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reactive.Linq; using Avalonia.Input.Raw; using Avalonia.Platform; -using Avalonia.VisualTree; namespace Avalonia.Input { @@ -14,7 +12,6 @@ namespace Avalonia.Input public class PenDevice : IPenDevice, IDisposable { private readonly Dictionary _pointers = new(); - private readonly Dictionary _lastPositions = new(); private int _clickCount; private Rect _lastClickRect; private ulong _lastClickTime; @@ -41,9 +38,7 @@ namespace Avalonia.Input _pointers[e.RawPointerId] = pointer = new Pointer(Pointer.GetNextFreeId(), PointerType.Pen, _pointers.Count == 0); } - - _lastPositions[e.RawPointerId] = e.Root.PointToScreen(e.Position); - + var props = new PointerPointProperties(e.InputModifiers, e.Type.ToUpdateKind(), e.Point.Twist, e.Point.Pressure, e.Point.XTilt, e.Point.YTilt); var keyModifiers = e.InputModifiers.ToKeyModifiers(); @@ -69,7 +64,6 @@ namespace Avalonia.Input { pointer.Dispose(); _pointers.Remove(e.RawPointerId); - _lastPositions.Remove(e.RawPointerId); } } @@ -153,17 +147,6 @@ namespace Avalonia.Input p.Dispose(); } - [Obsolete] - IInputElement? IPointerDevice.Captured => _pointers.Values - .FirstOrDefault(p => p.IsPrimary)?.Captured; - - [Obsolete] - void IPointerDevice.Capture(IInputElement? control) => _pointers.Values - .FirstOrDefault(p => p.IsPrimary)?.Capture(control); - - [Obsolete] - Point IPointerDevice.GetPosition(IVisual relativeTo) => new Point(-1, -1); - public IPointer? TryGetPointer(RawPointerEventArgs ev) { return _pointers.TryGetValue(ev.RawPointerId, out var pointer) diff --git a/src/Avalonia.Base/Input/PointerEventArgs.cs b/src/Avalonia.Base/Input/PointerEventArgs.cs index 058c2f9cc1..1f3c726e7b 100644 --- a/src/Avalonia.Base/Input/PointerEventArgs.cs +++ b/src/Avalonia.Base/Input/PointerEventArgs.cs @@ -11,7 +11,7 @@ namespace Avalonia.Input private readonly IVisual? _rootVisual; private readonly Point _rootVisualPosition; private readonly PointerPointProperties _properties; - private Lazy?>? _previousPoints; + private readonly Lazy?>? _previousPoints; public PointerEventArgs(RoutedEvent routedEvent, IInteractive? source, @@ -43,29 +43,6 @@ namespace Avalonia.Input { _previousPoints = previousPoints; } - - - class EmulatedDevice : IPointerDevice - { - private readonly PointerEventArgs _ev; - - public EmulatedDevice(PointerEventArgs ev) - { - _ev = ev; - } - - public void ProcessRawEvent(RawInputEventArgs ev) => throw new NotSupportedException(); - - public IInputElement? Captured => _ev.Pointer.Captured; - public void Capture(IInputElement? control) - { - _ev.Pointer.Capture(control); - } - - public Point GetPosition(IVisual relativeTo) => _ev.GetPosition(relativeTo); - - public IPointer? TryGetPointer(RawPointerEventArgs ev) => _ev.Pointer; - } /// /// Gets specific pointer generated by input device. @@ -77,28 +54,6 @@ namespace Avalonia.Input /// public ulong Timestamp { get; } - private IPointerDevice? _device; - - [Obsolete("Use Pointer to get pointer-specific information")] - public IPointerDevice Device => _device ?? (_device = new EmulatedDevice(this)); - - [Obsolete("Use KeyModifiers and PointerPointProperties")] - public InputModifiers InputModifiers - { - get - { - var mods = (InputModifiers)KeyModifiers; - if (_properties.IsLeftButtonPressed) - mods |= InputModifiers.LeftMouseButton; - if (_properties.IsMiddleButtonPressed) - mods |= InputModifiers.MiddleMouseButton; - if (_properties.IsRightButtonPressed) - mods |= InputModifiers.RightMouseButton; - - return mods; - } - } - /// /// Gets a value that indicates which key modifiers were active at the time that the pointer event was initiated. /// @@ -120,9 +75,6 @@ namespace Avalonia.Input /// The pointer position in the control's coordinates. public Point GetPosition(IVisual? relativeTo) => GetPosition(_rootVisualPosition, relativeTo); - [Obsolete("Use GetCurrentPoint")] - public PointerPoint GetPointerPoint(IVisual? relativeTo) => GetCurrentPoint(relativeTo); - /// /// Returns the PointerPoint associated with the current event /// @@ -171,8 +123,6 @@ namespace Avalonia.Input public class PointerPressedEventArgs : PointerEventArgs { - private readonly int _clickCount; - public PointerPressedEventArgs( IInteractive source, IPointer pointer, @@ -184,13 +134,10 @@ namespace Avalonia.Input : base(InputElement.PointerPressedEvent, source, pointer, rootVisual, rootVisualPosition, timestamp, properties, modifiers) { - _clickCount = clickCount; + ClickCount = clickCount; } - public int ClickCount => _clickCount; - - [Obsolete("Use PointerPressedEventArgs.GetCurrentPoint(this).Properties")] - public MouseButton MouseButton => Properties.PointerUpdateKind.GetMouseButton(); + public int ClickCount { get; } } public class PointerReleasedEventArgs : PointerEventArgs @@ -210,9 +157,6 @@ namespace Avalonia.Input /// Gets the mouse button that triggered the corresponding PointerPressed event /// public MouseButton InitialPressMouseButton { get; } - - [Obsolete("Use InitialPressMouseButton")] - public MouseButton MouseButton => InitialPressMouseButton; } public class PointerCaptureLostEventArgs : RoutedEventArgs diff --git a/src/Avalonia.Base/Input/PointerOverPreProcessor.cs b/src/Avalonia.Base/Input/PointerOverPreProcessor.cs index 67d1eea7e3..a95d66346a 100644 --- a/src/Avalonia.Base/Input/PointerOverPreProcessor.cs +++ b/src/Avalonia.Base/Input/PointerOverPreProcessor.cs @@ -15,6 +15,8 @@ namespace Avalonia.Input _inputRoot = inputRoot ?? throw new ArgumentNullException(nameof(inputRoot)); } + public PixelPoint? LastPosition => _lastPointer?.position; + public void OnCompleted() { ClearPointerOver(); diff --git a/src/Avalonia.Base/Input/Raw/RawDragEvent.cs b/src/Avalonia.Base/Input/Raw/RawDragEvent.cs index 652bad7115..c903aad684 100644 --- a/src/Avalonia.Base/Input/Raw/RawDragEvent.cs +++ b/src/Avalonia.Base/Input/Raw/RawDragEvent.cs @@ -8,8 +8,6 @@ namespace Avalonia.Input.Raw public IDataObject Data { get; } public DragDropEffects Effects { get; set; } public RawDragEventType Type { get; } - [Obsolete("Use KeyModifiers")] - public InputModifiers Modifiers { get; } public KeyModifiers KeyModifiers { get; } public RawDragEvent(IDragDropDevice inputDevice, RawDragEventType type, @@ -21,9 +19,6 @@ namespace Avalonia.Input.Raw Data = data; Effects = effects; KeyModifiers = modifiers.ToKeyModifiers(); -#pragma warning disable CS0618 // Type or member is obsolete - Modifiers = (InputModifiers)modifiers; -#pragma warning restore CS0618 // Type or member is obsolete } } } diff --git a/src/Avalonia.Base/Input/Raw/RawTouchEventArgs.cs b/src/Avalonia.Base/Input/Raw/RawTouchEventArgs.cs index 6706a45f48..3e842e6e3f 100644 --- a/src/Avalonia.Base/Input/Raw/RawTouchEventArgs.cs +++ b/src/Avalonia.Base/Input/Raw/RawTouchEventArgs.cs @@ -19,8 +19,5 @@ namespace Avalonia.Input.Raw { RawPointerId = rawPointerId; } - - [Obsolete("Use RawPointerId")] - public long TouchPointId { get => RawPointerId; set => RawPointerId = value; } } } diff --git a/src/Avalonia.Base/Input/TouchDevice.cs b/src/Avalonia.Base/Input/TouchDevice.cs index e914d860fd..1d5b1d6bbf 100644 --- a/src/Avalonia.Base/Input/TouchDevice.cs +++ b/src/Avalonia.Base/Input/TouchDevice.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using Avalonia.Input.Raw; using Avalonia.Platform; -using Avalonia.VisualTree; namespace Avalonia.Input { @@ -20,9 +19,6 @@ namespace Avalonia.Input private int _clickCount; private Rect _lastClickRect; private ulong _lastClickTime; - private Pointer? _lastPointer; - - IInputElement? IPointerDevice.Captured => _lastPointer?.Captured; RawInputModifiers GetModifiers(RawInputModifiers modifiers, bool isLeftButtonDown) { @@ -32,10 +28,6 @@ namespace Avalonia.Input return rv; } - void IPointerDevice.Capture(IInputElement? control) => _lastPointer?.Capture(control); - - Point IPointerDevice.GetPosition(IVisual relativeTo) => default; - public void ProcessRawEvent(RawInputEventArgs ev) { if (ev.Handled || _disposed) @@ -51,7 +43,6 @@ namespace Avalonia.Input PointerType.Touch, _pointers.Count == 0); pointer.Capture(hit); } - _lastPointer = pointer; var target = pointer.Captured ?? args.Root; var updateKind = args.Type.ToUpdateKind(); @@ -96,7 +87,6 @@ namespace Avalonia.Input new PointerPointProperties(GetModifiers(args.InputModifiers, false), updateKind), keyModifier, MouseButton.Left)); } - _lastPointer = null; } if (args.Type == RawPointerEventType.TouchCancel) @@ -104,7 +94,6 @@ namespace Avalonia.Input _pointers.Remove(args.RawPointerId); using (pointer) pointer.Capture(null); - _lastPointer = null; } if (args.Type == RawPointerEventType.TouchUpdate)