Removed DgvMouseRow helper class

This commit is contained in:
Peter Kirmeier 2023-04-27 20:27:16 +02:00
parent 959f0af976
commit 46bd18eb7e
3 changed files with 5 additions and 108 deletions

View file

@ -30,7 +30,6 @@ namespace SystemTrayMenu.Business
private readonly Menu?[] menus = new Menu?[MenuDefines.MenusMax];
private readonly BackgroundWorker workerMainMenu = new();
private readonly List<BackgroundWorker> workersSubMenu = new();
private readonly DgvMouseRow<ListView, ListViewItemData> dgvMouseRow = new();
private readonly WaitToLoadMenu waitToOpenMenu = new();
private readonly KeyboardInput keyboardInput;
private readonly JoystickHelper joystickHelper;
@ -165,10 +164,8 @@ namespace SystemTrayMenu.Business
}
waitToOpenMenu.MouseEnterOk += MouseEnterOk;
dgvMouseRow.RowMouseEnter += waitToOpenMenu.MouseEnter;
dgvMouseRow.RowMouseLeave += waitToOpenMenu.MouseLeave;
#if TODO // Misc MouseEvents
dgvMouseRow.RowMouseLeave += Dgv_RowMouseLeave;
dgvMouseRow.RowMouseLeave += Dgv_RowMouseLeave; // event moved to Menu.CellMouseLeave()
#endif
joystickHelper = new();
@ -263,7 +260,6 @@ namespace SystemTrayMenu.Business
waitLeave.Stop();
IconReader.Dispose();
menus[0]?.Close();
dgvMouseRow.Dispose();
foreach (FileSystemWatcher watcher in watchers)
{
@ -601,8 +597,8 @@ namespace SystemTrayMenu.Business
menu.AddItemsToMenu(menuData.RowDatas);
menu.CellMouseEnter += dgvMouseRow.CellMouseEnter;
menu.CellMouseLeave += dgvMouseRow.CellMouseLeave;
menu.CellMouseEnter += waitToOpenMenu.MouseEnter;
menu.CellMouseLeave += waitToOpenMenu.MouseLeave;
menu.CellMouseDown += Dgv_MouseDown;
menu.CellMouseUp += Dgv_MouseUp;
menu.CellOpenOnClick += Dgv_OpenItemOnClick;
@ -612,7 +608,6 @@ namespace SystemTrayMenu.Business
if (dgv != null)
{
#if TODO // Misc MouseEvents
dgv.MouseLeave += dgvMouseRow.MouseLeave;
dgv.MouseMove += waitToOpenMenu.MouseMove;
#endif
dgv.SelectionChanged += Dgv_SelectionChanged;

View file

@ -1,98 +0,0 @@
// <copyright file="DgvMouseRow.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu.Helpers
{
using System;
using System.Windows.Threading;
public class DgvMouseRow<TList, TItem> : IDisposable
where TList : notnull
where TItem : notnull
{
private readonly DispatcherTimer timerRaiseRowMouseLeave = new DispatcherTimer(DispatcherPriority.Input, Dispatcher.CurrentDispatcher);
private TList? currentList;
private TItem? currentItem;
internal DgvMouseRow()
{
timerRaiseRowMouseLeave.Interval = TimeSpan.FromMilliseconds(200);
timerRaiseRowMouseLeave.Tick += Elapsed;
void Elapsed(object? sender, EventArgs e)
{
timerRaiseRowMouseLeave.Stop();
TriggerRowMouseLeave();
}
}
internal event Action<TList, TItem>? RowMouseEnter;
internal event Action<TList, TItem>? RowMouseLeave;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
internal void CellMouseEnter(TList list, TItem item)
{
if (!list.Equals(currentList) || !item.Equals(currentItem))
{
if (timerRaiseRowMouseLeave.IsEnabled)
{
timerRaiseRowMouseLeave.Stop();
TriggerRowMouseLeave();
}
TriggerRowMouseEnter(list, item);
}
else
{
timerRaiseRowMouseLeave.Stop();
}
currentList = list;
currentItem = item;
}
internal void CellMouseLeave()
{
timerRaiseRowMouseLeave.Start();
}
internal void MouseLeave(object sender, EventArgs e)
{
if (timerRaiseRowMouseLeave.IsEnabled)
{
timerRaiseRowMouseLeave.Stop();
TriggerRowMouseLeave();
}
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
timerRaiseRowMouseLeave.Stop();
}
}
private void TriggerRowMouseLeave()
{
if (currentList != null && currentItem != null)
{
RowMouseLeave?.Invoke(currentList, currentItem);
}
currentList = default;
currentItem = default;
}
private void TriggerRowMouseEnter(TList list, TItem item)
{
RowMouseEnter?.Invoke(list, item);
}
}
}

View file

@ -300,7 +300,7 @@ namespace SystemTrayMenu.UserInterface
internal event Action<ListView, ListViewItemData>? CellMouseEnter;
internal event Action? CellMouseLeave;
internal event Action<ListView, ListViewItemData>? CellMouseLeave;
internal event Action<ListView, ListViewItemData, MouseButtonEventArgs>? CellMouseDown;
@ -1246,7 +1246,7 @@ namespace SystemTrayMenu.UserInterface
private void ListViewItem_MouseLeave(object sender, MouseEventArgs e)
{
CellMouseLeave?.Invoke();
CellMouseLeave?.Invoke(dgv, (ListViewItemData)((ListViewItem)sender).Content);
}
private void ListViewItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)