Skip to content

Commit c26085f

Browse files
authored
Fix issue 3031 (#3419)
* Fix issue 3031 * Update Ripple.cs
1 parent 845ba63 commit c26085f

File tree

1 file changed

+29
-11
lines changed

1 file changed

+29
-11
lines changed

MaterialDesignThemes.Wpf/Ripple.cs

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Windows.Media;
22
using System.Windows.Media.Animation;
3+
using System.Windows.Threading;
34

45
namespace MaterialDesignThemes.Wpf;
56

@@ -60,19 +61,36 @@ private static void MouseButtonEventHandler(object sender, MouseButtonEventArgs
6061

6162
private static void MouseMoveEventHandler(object sender, MouseEventArgs e)
6263
{
63-
foreach (var ripple in PressedInstances.ToList())
64+
#if NET6_0_OR_GREATER
65+
DispatcherExtensions.Invoke(Dispatcher.CurrentDispatcher, () =>
66+
{
67+
foreach (var ripple in PressedInstances.ToList())
68+
{
69+
var relativePosition = Mouse.GetPosition(ripple);
70+
if (relativePosition.X < 0 || relativePosition.Y < 0 || relativePosition.X >= ripple.ActualWidth || relativePosition.Y >= ripple.ActualHeight)
71+
{
72+
VisualStateManager.GoToState(ripple, TemplateStateMouseOut, true);
73+
PressedInstances.Remove(ripple);
74+
}
75+
}
76+
});
77+
#else
78+
if (Dispatcher.CurrentDispatcher.CheckAccess())
6479
{
65-
var relativePosition = Mouse.GetPosition(ripple);
66-
if (relativePosition.X < 0
67-
|| relativePosition.Y < 0
68-
|| relativePosition.X >= ripple.ActualWidth
69-
|| relativePosition.Y >= ripple.ActualHeight)
70-
71-
{
72-
VisualStateManager.GoToState(ripple, TemplateStateMouseOut, true);
73-
PressedInstances.Remove(ripple);
74-
}
80+
Dispatcher.CurrentDispatcher.Invoke(() =>
81+
{
82+
foreach (var ripple in PressedInstances.ToList())
83+
{
84+
var relativePosition = Mouse.GetPosition(ripple);
85+
if (relativePosition.X < 0 || relativePosition.Y < 0 || relativePosition.X >= ripple.ActualWidth || relativePosition.Y >= ripple.ActualHeight)
86+
{
87+
VisualStateManager.GoToState(ripple, TemplateStateMouseOut, true);
88+
PressedInstances.Remove(ripple);
89+
}
90+
}
91+
});
7592
}
93+
#endif
7694
}
7795

7896
public static readonly DependencyProperty FeedbackProperty = DependencyProperty.Register(

0 commit comments

Comments
 (0)