Fix context menu keyboard arrows navigation to skip disabled items

This commit is contained in:
Wojtek Figat
2021-08-16 21:55:48 +02:00
parent bb4d94ee85
commit 34132e3074
2 changed files with 17 additions and 5 deletions

View File

@@ -456,18 +456,30 @@ namespace FlaxEditor.GUI.ContextMenu
if (base.OnKeyDown(key))
return true;
// Se;ect the first item
if (key == KeyboardKeys.ArrowDown)
switch (key)
{
case KeyboardKeys.ArrowDown:
for (int i = 0; i < _panel.Children.Count; i++)
{
if (_panel.Children[i] is ContextMenuButton item && item.Visible)
if (_panel.Children[i] is ContextMenuButton item && item.Visible && item.Enabled)
{
item.Focus();
_panel.ScrollViewTo(item);
return true;
}
}
break;
case KeyboardKeys.ArrowUp:
for (int i = _panel.Children.Count - 1; i >= 0; i--)
{
if (_panel.Children[i] is ContextMenuButton item && item.Visible && item.Enabled)
{
item.Focus();
_panel.ScrollViewTo(item);
return true;
}
}
break;
}
return false;

View File

@@ -183,7 +183,7 @@ namespace FlaxEditor.GUI.ContextMenu
case KeyboardKeys.ArrowUp:
for (int i = IndexInParent - 1; i >= 0; i--)
{
if (ParentContextMenu.ItemsContainer.Children[i] is ContextMenuButton item && item.Visible)
if (ParentContextMenu.ItemsContainer.Children[i] is ContextMenuButton item && item.Visible && item.Enabled)
{
item.Focus();
ParentContextMenu.ItemsContainer.ScrollViewTo(item);
@@ -194,7 +194,7 @@ namespace FlaxEditor.GUI.ContextMenu
case KeyboardKeys.ArrowDown:
for (int i = IndexInParent + 1; i < ParentContextMenu.ItemsContainer.Children.Count; i++)
{
if (ParentContextMenu.ItemsContainer.Children[i] is ContextMenuButton item && item.Visible)
if (ParentContextMenu.ItemsContainer.Children[i] is ContextMenuButton item && item.Visible && item.Enabled)
{
item.Focus();
ParentContextMenu.ItemsContainer.ScrollViewTo(item);