From 97185b19894cc3e581e52cab26be8a873e9dfdf1 Mon Sep 17 00:00:00 2001 From: Peter Kirmeier Date: Fri, 5 May 2023 20:01:49 +0200 Subject: [PATCH] Adjusted naming and variables for menu selection with keys Remove obsolete mouse events (non active code) --- Business/KeyboardInput.cs | 116 ++++++++++++++++--------------------- Business/Menus.cs | 9 +-- Business/WaitToLoadMenu.cs | 53 +---------------- UserInterface/Menu.xaml.cs | 6 -- 4 files changed, 51 insertions(+), 133 deletions(-) diff --git a/Business/KeyboardInput.cs b/Business/KeyboardInput.cs index 15ff435..9761081 100644 --- a/Business/KeyboardInput.cs +++ b/Business/KeyboardInput.cs @@ -251,23 +251,20 @@ namespace SystemTrayMenu.Handler { Menu? menuFromSelected; Menu? menuBefore; - ListView? dgvBefore; ListViewItemData? rowBefore = focussedRow; - bool toClear = false; - bool isSelected = focussedRow?.data.IsSelected ?? false; + bool doClearOldSelection = false; + bool wasSelected = focussedRow?.data.IsSelected ?? false; - if (isSelected) + if (wasSelected) { menuFromSelected = focussedRow?.data.SubMenu; menuBefore = focussedMenu; - dgvBefore = menuBefore?.GetDataGridView(); } else { ResetSelectedByKey(); menuFromSelected = null; menuBefore = null; - dgvBefore = null; } switch (key) @@ -294,50 +291,50 @@ namespace SystemTrayMenu.Handler break; case Key.Up: if ((modifiers == ModifierKeys.None) && - dgvBefore != null && - (TrySelectPrevious(dgvBefore, dgvBefore.Items.IndexOf(rowBefore)) || - TrySelectPrevious(dgvBefore, dgvBefore.Items.Count - 1))) + menuBefore != null && + (TrySelectPrevious(menuBefore, menuBefore.GetDataGridView().Items.IndexOf(rowBefore)) || + TrySelectPrevious(menuBefore, menuBefore.GetDataGridView().Items.Count - 1))) { RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; + doClearOldSelection = wasSelected; } break; case Key.Down: if ((modifiers == ModifierKeys.None) && - dgvBefore != null && - (TrySelectNext(dgvBefore, dgvBefore.Items.IndexOf(rowBefore)) || - TrySelectNext(dgvBefore, 0))) + menuBefore != null && + (TrySelectNext(menuBefore, menuBefore.GetDataGridView().Items.IndexOf(rowBefore)) || + TrySelectNext(menuBefore, 0))) { RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; + doClearOldSelection = wasSelected; } break; case Key.Home: if ((modifiers == ModifierKeys.None) && - dgvBefore != null && - TrySelectNext(dgvBefore, 0)) + menuBefore != null && + TrySelectNext(menuBefore, 0)) { RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; + doClearOldSelection = wasSelected; } break; case Key.End: if ((modifiers == ModifierKeys.None) && - dgvBefore != null && - TrySelectPrevious(dgvBefore, dgvBefore.Items.Count - 1)) + menuBefore != null && + TrySelectPrevious(menuBefore, menuBefore.GetDataGridView().Items.Count - 1)) { RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; + doClearOldSelection = wasSelected; } break; case Key.Left: case Key.Right: if (modifiers == ModifierKeys.None && - dgvBefore != null && + menuBefore != null && focussedMenu != null) { // True, when next is left and key is left = true OR next is right (=not left) and key is right (not left) @@ -350,22 +347,18 @@ namespace SystemTrayMenu.Handler if (nextMenuInKeyDirection || prevMenuAgainstKeyDirection) { - // Next is in key direction or prev is opposite of key direction ==> TrySelect sub/next menu - if (isSelected) + // Next is in key direction or prev is opposite of key direction ==> Select sub/next menu + if (wasSelected) { if (menuFromSelected != null && menuFromSelected == focussedMenu?.SubMenu) { - ListView dgv = menuFromSelected.GetDataGridView(); - if (dgv != null && dgv.Items.Count > 0) + focussedMenu = menuFromSelected; + focussedRow = null; + if (TrySelectNext(menuFromSelected, 0)) { - focussedMenu = menuFromSelected; - focussedRow = null; - if (TrySelectNext(dgv, 0)) - { - RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; - } + RaiseRowSelectionChanged(menuBefore, rowBefore); + doClearOldSelection = wasSelected; } } } @@ -379,28 +372,24 @@ namespace SystemTrayMenu.Handler focussedRow = null; Menu? lastMenu = focussedMenu; - if (lastMenu != null) + if (lastMenu != null && TrySelectNext(lastMenu, 0)) { - ListView dgv = lastMenu.GetDataGridView(); - if (TrySelectNext(dgv, 0)) - { - RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; - } + RaiseRowSelectionChanged(menuBefore, rowBefore); + doClearOldSelection = wasSelected; } } } else if (focussedMenu?.ParentMenu != null) { - // Next is in opposite key direction and prev is in key direction ==> TrySelect parent/prev menu + // Next is in opposite key direction and prev is in key direction ==> Select parent/prev menu focussedMenu = focussedMenu.ParentMenu; focussedRow = null; ListView dgv = focussedMenu.GetDataGridView(); - if (TrySelectNext(dgv, dgv.Items.IndexOf(dgv.SelectedItems.Count > 0 ? dgv.SelectedItems[0] : null)) || - TrySelectNext(dgv, 0)) + if (TrySelectNext(focussedMenu, dgv.Items.IndexOf(dgv.SelectedItems.Count > 0 ? dgv.SelectedItems[0] : null)) || + TrySelectNext(focussedMenu, 0)) { RaiseRowSelectionChanged(menuBefore, rowBefore); - toClear = true; + doClearOldSelection = wasSelected; } } } @@ -413,7 +402,7 @@ namespace SystemTrayMenu.Handler { RowDeselected?.Invoke(menuBefore, rowBefore); ResetSelectedByKey(); - toClear = true; + doClearOldSelection = wasSelected; ClosePressed?.Invoke(); } @@ -422,7 +411,7 @@ namespace SystemTrayMenu.Handler break; } - if (isSelected && toClear) + if (doClearOldSelection) { ClearIsSelectedByKey(menuBefore, rowBefore); } @@ -439,15 +428,18 @@ namespace SystemTrayMenu.Handler } } - private bool TrySelectNext(ListView dgv, int indexStart) + private bool TrySelectNext(Menu menu, int indexStart) { bool found = false; if (indexStart >= 0) { + ListView dgv = menu.GetDataGridView(); for (uint i = (uint)indexStart; i < dgv.Items.Count; i++) { - if (TrySelect(dgv, (ListViewItemData)dgv.Items[(int)i])) + ListViewItemData itemData = (ListViewItemData)dgv.Items[(int)i]; + if (itemData != focussedRow) { + Select(dgv, itemData); found = true; break; } @@ -457,11 +449,12 @@ namespace SystemTrayMenu.Handler return found; } - private bool TrySelectPrevious(ListView dgv, int indexStart) + private bool TrySelectPrevious(Menu menu, int indexStart) { bool found = false; if (indexStart > 0) { + ListView dgv = menu.GetDataGridView(); if (dgv.Items.Count <= indexStart) { indexStart = dgv.Items.Count - 1; @@ -469,8 +462,10 @@ namespace SystemTrayMenu.Handler for (int i = indexStart; i > -1; i--) { - if (TrySelect(dgv, (ListViewItemData)dgv.Items[i])) + ListViewItemData itemData = (ListViewItemData)dgv.Items[i]; + if (itemData != focussedRow) { + Select(dgv, itemData); found = true; break; } @@ -480,25 +475,12 @@ namespace SystemTrayMenu.Handler return found; } - private bool TrySelect(ListView dgv, ListViewItemData itemData) + private void Select(ListView dgv, ListViewItemData itemData) { - bool found = false; - if (itemData != focussedRow) - { - focussedRow = itemData; - itemData.data.IsSelected = true; - if (dgv.SelectedItems.Contains(itemData)) - { - dgv.SelectedItems.Remove(itemData); - } - - dgv.SelectedItems.Add(itemData); - dgv.ScrollIntoView(itemData); - - found = true; - } - - return found; + focussedRow = itemData; + itemData.data.IsSelected = true; + dgv.SelectedItems.Add(itemData); + dgv.ScrollIntoView(itemData); } } } diff --git a/Business/Menus.cs b/Business/Menus.cs index bf41006..f3c0c9c 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -12,7 +12,6 @@ namespace SystemTrayMenu.Business using System.Linq; using System.Windows; using System.Windows.Controls; - using System.Windows.Input; using System.Windows.Media; using System.Windows.Threading; using Microsoft.Win32; @@ -536,9 +535,6 @@ namespace SystemTrayMenu.Business ListView dgv = menu.GetDataGridView(); dgv.SelectionChanged += Dgv_SelectionChanged; -#if TODO // Misc MouseEvents - dgv.MouseMove += waitToOpenMenu.MouseMove; -#endif if (menu.Level == 0) { @@ -600,10 +596,7 @@ namespace SystemTrayMenu.Business } } - private void Dgv_SelectionChanged(object sender, EventArgs e) - { - RefreshSelection((ListView)sender); - } + private void Dgv_SelectionChanged(object sender, EventArgs e) => RefreshSelection((ListView)sender); private void RefreshSelection(ListView dgv) { diff --git a/Business/WaitToLoadMenu.cs b/Business/WaitToLoadMenu.cs index 589fecd..a2ab836 100644 --- a/Business/WaitToLoadMenu.cs +++ b/Business/WaitToLoadMenu.cs @@ -5,9 +5,6 @@ namespace SystemTrayMenu.Handler { using System; - using System.Collections; - using System.Windows.Controls; - using System.Windows.Input; using System.Windows.Threading; using SystemTrayMenu.DataClasses; using SystemTrayMenu.Utilities; @@ -20,16 +17,7 @@ namespace SystemTrayMenu.Handler private readonly DispatcherTimer timerStartLoad = new(); private ListView? dgv; private ListViewItemData? dgvItemData; -#if TODO // Misc MouseEvents - private ListView? dgvTmp; - private ListViewItemData rowItemDataTmp; -#endif private bool alreadyOpened; - -#if TODO // Misc MouseEvents - private int mouseMoveEvents; - private DateTime dateTimeLastMouseMoveEvent = DateTime.Now; -#endif private bool checkForMouseActive = true; internal WaitToLoadMenu() @@ -64,13 +52,6 @@ namespace SystemTrayMenu.Handler SetData(menu.GetDataGridView(), itemData); timerStartLoad.Start(); } -#if TODO // Misc MouseEvents - else - { - dgvTmp = dgv; - rowItemDataTmp = itemData; - } -#endif } internal void RowSelected(Menu menu, ListViewItemData itemData) @@ -124,35 +105,6 @@ namespace SystemTrayMenu.Handler CallOpenMenuNow(); } -#if TODO // Misc MouseEvents - internal void MouseMove(object sender, MouseEventArgs e) - { - if (!MouseActive) - { - if (mouseMoveEvents > 6) - { - MouseActive = true; - if (dgvTmp != null) - { - MouseEnter(dgvTmp, rowItemDataTmp); - } - - mouseMoveEvents = 0; - } - else if (DateTime.Now - dateTimeLastMouseMoveEvent < - new TimeSpan(0, 0, 0, 0, 200)) - { - mouseMoveEvents++; - } - else - { - dateTimeLastMouseMoveEvent = DateTime.Now; - mouseMoveEvents = 0; - } - } - } -#endif - private void WaitStartLoad_Tick(object? sender, EventArgs e) { timerStartLoad.Stop(); @@ -195,13 +147,10 @@ namespace SystemTrayMenu.Handler } alreadyOpened = false; -#if TODO // Misc MouseEvents - dgvTmp = null; -#endif + this.dgv = dgv; dgvItemData = itemData; dgvItemData.data.IsSelected = true; - dgv.SelectedItem = dgvItemData; } diff --git a/UserInterface/Menu.xaml.cs b/UserInterface/Menu.xaml.cs index 85aa2be..bc8f8fe 100644 --- a/UserInterface/Menu.xaml.cs +++ b/UserInterface/Menu.xaml.cs @@ -263,12 +263,6 @@ namespace SystemTrayMenu.UserInterface internal event Action? MenuScrolled; -#if TODO // Misc MouseEvents - internal new event Action MouseEnter; - - internal new event Action MouseLeave; -#endif - internal event Action? CmdKeyProcessed; internal event Action? SearchTextChanging;