diff --git a/src/Avalonia.Base/Input/PointerOverPreProcessor.cs b/src/Avalonia.Base/Input/PointerOverPreProcessor.cs index 7134a42666..347ba35a41 100644 --- a/src/Avalonia.Base/Input/PointerOverPreProcessor.cs +++ b/src/Avalonia.Base/Input/PointerOverPreProcessor.cs @@ -41,14 +41,16 @@ namespace Avalonia.Input _lastActivePointerDevice = pointerDevice; } - if (args.Type is RawPointerEventType.LeaveWindow or RawPointerEventType.NonClientLeftButtonDown - or RawPointerEventType.TouchCancel or RawPointerEventType.TouchEnd - && _currentPointer is var (lastPointer, lastPosition)) + if (args.Type is RawPointerEventType.LeaveWindow or RawPointerEventType.NonClientLeftButtonDown + or RawPointerEventType.TouchCancel or RawPointerEventType.TouchEnd) { - _currentPointer = null; - ClearPointerOver(lastPointer, args.Root, 0, PointToClient(args.Root, lastPosition), - new PointerPointProperties(args.InputModifiers, args.Type.ToUpdateKind()), - args.InputModifiers.ToKeyModifiers()); + if (_currentPointer is var (lastPointer, lastPosition)) + { + _currentPointer = null; + ClearPointerOver(lastPointer, args.Root, 0, PointToClient(args.Root, lastPosition), + new PointerPointProperties(args.InputModifiers, args.Type.ToUpdateKind()), + args.InputModifiers.ToKeyModifiers()); + } } else if (args.Type is RawPointerEventType.TouchBegin or RawPointerEventType.TouchUpdate && args.Root is Visual visual) {