Rework to remove IsMainUsable

This commit is contained in:
Peter Kirmeier 2023-05-16 20:53:01 +02:00
parent 1e5c8c8f94
commit e16d682d87
2 changed files with 28 additions and 52 deletions

View file

@ -8,7 +8,6 @@ namespace SystemTrayMenu.Business
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Windows;
@ -72,7 +71,7 @@ namespace SystemTrayMenu.Business
waitToOpenMenu.StartLoadMenu += StartLoadMenu;
void StartLoadMenu(RowData rowData)
{
if (!IsMainUsable)
if (mainMenu == null || mainMenu.Visibility != Visibility.Visible)
{
return;
}
@ -119,10 +118,21 @@ namespace SystemTrayMenu.Business
joystickHelper = new();
joystickHelper.KeyPressed += (key, modifiers) =>
{
if (IsMainUsable)
if (mainMenu != null && mainMenu.Visibility == Visibility.Visible)
{
Menu? menu = GetActiveMenu(mainMenu) ?? mainMenu; // TODO: Do we really need to provide the menu? doesn't keyboardInput already know this?
menu?.Dispatcher.Invoke(keyboardInput.CmdKeyProcessed, new object[] { menu, key, modifiers });
Menu? menu = mainMenu;
do
{
if (menu.IsActive || menu.IsKeyboardFocusWithin)
{
// Send the keys to the active menu
menu.Dispatcher.Invoke(keyboardInput.CmdKeyProcessed, new object[] { menu, key, modifiers });
return;
}
menu = menu.SubMenu;
}
while (menu != null);
}
};
}
@ -183,9 +193,6 @@ namespace SystemTrayMenu.Business
internal event Action? LoadStopped;
[MemberNotNullWhen(true, nameof(mainMenu))]
private bool IsMainUsable => mainMenu != null && mainMenu.Visibility == Visibility.Visible;
public void Dispose()
{
SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;
@ -274,21 +281,6 @@ namespace SystemTrayMenu.Business
return menu;
}
private static Menu? GetActiveMenu(Menu? menu)
{
while (menu != null)
{
if (menu.IsActive || menu.IsKeyboardFocusWithin)
{
break;
}
menu = menu.SubMenu;
}
return menu;
}
private static void HideOldMenu(Menu menuToShow)
{
Menu? menuPrevious = menuToShow.ParentMenu;
@ -381,7 +373,7 @@ namespace SystemTrayMenu.Business
private void LoadSubMenuCompleted(object? senderCompleted, RunWorkerCompletedEventArgs e)
{
if (e.Result == null || !IsMainUsable)
if (e.Result == null || mainMenu == null || mainMenu.Visibility != Visibility.Visible)
{
return;
}
@ -465,17 +457,6 @@ namespace SystemTrayMenu.Business
}
}
menu.UserDragsMenu += Menu_UserDragsMenu;
void Menu_UserDragsMenu(Menu mainMenu)
{
Menu? menu = mainMenu.SubMenu;
if (menu != null)
{
// TODO: menus array not updated? Remove any way? (Call HideOldMenu within Menu_MouseDown direcly?)
HideOldMenu(menu);
}
}
menu.Deactivated += Deactivate;
void Deactivate(object? sender, EventArgs e)
{
@ -548,26 +529,23 @@ namespace SystemTrayMenu.Business
private void FadeHalfOrOutIfNeeded()
{
if (IsMainUsable)
if (!App.IsActiveApp && mainMenu != null && mainMenu.Visibility == Visibility.Visible)
{
if (!App.IsActiveApp)
if (Settings.Default.StaysOpenWhenFocusLost && IsMouseOverAnyMenu(mainMenu) != null)
{
if (Settings.Default.StaysOpenWhenFocusLost && IsMouseOverAnyMenu(mainMenu) != null)
if (!keyboardInput.IsSelectedByKey)
{
if (!keyboardInput.IsSelectedByKey)
{
mainMenu?.ShowWithFade(true, true);
}
}
else if (Config.AlwaysOpenByPin)
{
mainMenu?.ShowWithFade(true, true);
}
else
{
mainMenu?.HideWithFade(true);
mainMenu.ShowWithFade(true, true);
}
}
else if (Config.AlwaysOpenByPin)
{
mainMenu.ShowWithFade(true, true);
}
else
{
mainMenu.HideWithFade(true);
}
}
}

View file

@ -229,8 +229,6 @@ namespace SystemTrayMenu.UserInterface
internal event Action<Menu, bool, bool>? SearchTextChanged;
internal event Action<Menu>? UserDragsMenu;
internal event Action<Menu>? RowSelectionChanged;
internal event Action<Menu, ListViewItemData>? CellMouseEnter;