From 88f3088031c874bc758288977990b34de6bc50a3 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Sat, 23 Jul 2022 01:20:57 -0400 Subject: [PATCH] Avoid deprecated input API in devtools --- .../Diagnostics/Views/MainWindow.xaml.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs index 3b143d3b58..96dc929434 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs @@ -19,8 +19,10 @@ namespace Avalonia.Diagnostics.Views internal class MainWindow : Window, IStyleHost { private readonly IDisposable? _keySubscription; + private readonly IDisposable? _pointerSubscription; private readonly Dictionary _frozenPopupStates; private AvaloniaObject? _root; + private PixelPoint _lastPointerPosition; public MainWindow() { @@ -30,6 +32,10 @@ namespace Avalonia.Diagnostics.Views .OfType() .Where(x => x.Type == RawKeyEventType.KeyDown) .Subscribe(RawKeyDown); + _pointerSubscription = InputManager.Instance?.Process + .OfType() + .Subscribe(x => _lastPointerPosition = x.Root.PointToScreen(x.Position)); + _frozenPopupStates = new Dictionary(); @@ -84,6 +90,7 @@ namespace Avalonia.Diagnostics.Views { base.OnClosed(e); _keySubscription?.Dispose(); + _pointerSubscription?.Dispose(); foreach (var state in _frozenPopupStates) { @@ -108,9 +115,7 @@ namespace Avalonia.Diagnostics.Views private IControl? GetHoveredControl(TopLevel topLevel) { -#pragma warning disable CS0618 // Type or member is obsolete - var point = (topLevel as IInputRoot)?.MouseDevice?.GetPosition(topLevel) ?? default; -#pragma warning restore CS0618 // Type or member is obsolete + var point = topLevel.PointToClient(_lastPointerPosition); return (IControl?)topLevel.GetVisualsAt(point, x => {