mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-09-30 09:06:32 +13:00
Rework to remove IsMainUsable
This commit is contained in:
parent
1e5c8c8f94
commit
e16d682d87
2 changed files with 28 additions and 52 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue