From 46bd18eb7e7af4b7e648bf14c159970ee245555e Mon Sep 17 00:00:00 2001 From: Peter Kirmeier Date: Thu, 27 Apr 2023 20:27:16 +0200 Subject: [PATCH] Removed DgvMouseRow helper class --- Business/Menus.cs | 11 ++--- Helpers/DgvMouseRow.cs | 98 -------------------------------------- UserInterface/Menu.xaml.cs | 4 +- 3 files changed, 5 insertions(+), 108 deletions(-) delete mode 100644 Helpers/DgvMouseRow.cs diff --git a/Business/Menus.cs b/Business/Menus.cs index e8188c0..ed1ba8a 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -30,7 +30,6 @@ namespace SystemTrayMenu.Business private readonly Menu?[] menus = new Menu?[MenuDefines.MenusMax]; private readonly BackgroundWorker workerMainMenu = new(); private readonly List workersSubMenu = new(); - private readonly DgvMouseRow 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; diff --git a/Helpers/DgvMouseRow.cs b/Helpers/DgvMouseRow.cs deleted file mode 100644 index 4a300a5..0000000 --- a/Helpers/DgvMouseRow.cs +++ /dev/null @@ -1,98 +0,0 @@ -// -// Copyright (c) PlaceholderCompany. All rights reserved. -// - -namespace SystemTrayMenu.Helpers -{ - using System; - using System.Windows.Threading; - - public class DgvMouseRow : 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? RowMouseEnter; - - internal event Action? 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); - } - } -} \ No newline at end of file diff --git a/UserInterface/Menu.xaml.cs b/UserInterface/Menu.xaml.cs index c74476a..2c0395a 100644 --- a/UserInterface/Menu.xaml.cs +++ b/UserInterface/Menu.xaml.cs @@ -300,7 +300,7 @@ namespace SystemTrayMenu.UserInterface internal event Action? CellMouseEnter; - internal event Action? CellMouseLeave; + internal event Action? CellMouseLeave; internal event Action? 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)