diff --git a/UserInterface/Menu.xaml b/UserInterface/Menu.xaml
index b073c75..486a9bd 100644
--- a/UserInterface/Menu.xaml
+++ b/UserInterface/Menu.xaml
@@ -205,6 +205,7 @@
+
diff --git a/UserInterface/Menu.xaml.cs b/UserInterface/Menu.xaml.cs
index 60506e1..dbde2af 100644
--- a/UserInterface/Menu.xaml.cs
+++ b/UserInterface/Menu.xaml.cs
@@ -38,6 +38,7 @@ namespace SystemTrayMenu.UserInterface
private readonly string folderPath;
+ private Tuple detectLeftMouseButtonClicked = new(null, 0);
private bool isShellContextMenuOpen;
private bool directionToRight;
private Point lastLocation;
@@ -1154,6 +1155,8 @@ namespace SystemTrayMenu.UserInterface
private void ListViewItem_MouseLeave(object sender, MouseEventArgs e)
{
+ detectLeftMouseButtonClicked = new (null, 0);
+
if (!isShellContextMenuOpen)
{
CellMouseLeave?.Invoke();
@@ -1170,7 +1173,20 @@ namespace SystemTrayMenu.UserInterface
CellMouseDown?.Invoke((RowData)((ListViewItem)sender).Content);
private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) =>
- ((RowData)((ListViewItem)sender).Content).OpenItem(e.ClickCount);
+ detectLeftMouseButtonClicked = new((ListViewItem)sender, e.ClickCount);
+
+ private void ListViewItem_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ {
+ ListViewItem lvi = (ListViewItem)sender;
+ if (detectLeftMouseButtonClicked.Item1 == lvi)
+ {
+ // Same row has been called with PreviewMouseLeftButtonDown without leaving the item, so we can call it a "click".
+ // The click count is also taken from Down event as it seems not being correct in Up event.
+ ((RowData)lvi.Content).OpenItem(detectLeftMouseButtonClicked.Item2);
+ }
+
+ detectLeftMouseButtonClicked = new(null, 0);
+ }
private void ListViewItem_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{