From d31efbe4cf9de97e9893e467fd47564755b64e7f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 20 Apr 2016 13:41:05 +0200 Subject: [PATCH] Use weak reference in for Gesture last press. --- src/Perspex.Input/Gestures.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Perspex.Input/Gestures.cs b/src/Perspex.Input/Gestures.cs index 48e9d87f86..fb68cc5d69 100644 --- a/src/Perspex.Input/Gestures.cs +++ b/src/Perspex.Input/Gestures.cs @@ -18,7 +18,7 @@ namespace Perspex.Input RoutingStrategies.Bubble, typeof(Gestures)); - private static IInteractive s_lastPress; + private static WeakReference s_lastPress; static Gestures() { @@ -34,9 +34,9 @@ namespace Perspex.Input if (e.ClickCount <= 1) { - s_lastPress = e.Source; + s_lastPress = new WeakReference(e.Source); } - else if (e.ClickCount == 2 && s_lastPress == e.Source) + else if (s_lastPress?.IsAlive == true && e.ClickCount == 2 && s_lastPress.Target == e.Source) { e.Source.RaiseEvent(new RoutedEventArgs(DoubleTappedEvent)); } @@ -49,9 +49,9 @@ namespace Perspex.Input { var e = (PointerReleasedEventArgs)ev; - if (s_lastPress == e.Source) + if (s_lastPress?.IsAlive == true && s_lastPress.Target == e.Source) { - s_lastPress.RaiseEvent(new RoutedEventArgs(TappedEvent)); + ((IInteractive)s_lastPress.Target).RaiseEvent(new RoutedEventArgs(TappedEvent)); } } }