Fix context menu keyboard arrows navigation to skip disabled items
This commit is contained in:
@@ -456,18 +456,30 @@ namespace FlaxEditor.GUI.ContextMenu
|
|||||||
if (base.OnKeyDown(key))
|
if (base.OnKeyDown(key))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Se;ect the first item
|
switch (key)
|
||||||
if (key == KeyboardKeys.ArrowDown)
|
|
||||||
{
|
{
|
||||||
|
case KeyboardKeys.ArrowDown:
|
||||||
for (int i = 0; i < _panel.Children.Count; i++)
|
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();
|
item.Focus();
|
||||||
_panel.ScrollViewTo(item);
|
_panel.ScrollViewTo(item);
|
||||||
return true;
|
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;
|
return false;
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ namespace FlaxEditor.GUI.ContextMenu
|
|||||||
case KeyboardKeys.ArrowUp:
|
case KeyboardKeys.ArrowUp:
|
||||||
for (int i = IndexInParent - 1; i >= 0; i--)
|
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();
|
item.Focus();
|
||||||
ParentContextMenu.ItemsContainer.ScrollViewTo(item);
|
ParentContextMenu.ItemsContainer.ScrollViewTo(item);
|
||||||
@@ -194,7 +194,7 @@ namespace FlaxEditor.GUI.ContextMenu
|
|||||||
case KeyboardKeys.ArrowDown:
|
case KeyboardKeys.ArrowDown:
|
||||||
for (int i = IndexInParent + 1; i < ParentContextMenu.ItemsContainer.Children.Count; i++)
|
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();
|
item.Focus();
|
||||||
ParentContextMenu.ItemsContainer.ScrollViewTo(item);
|
ParentContextMenu.ItemsContainer.ScrollViewTo(item);
|
||||||
|
|||||||
Reference in New Issue
Block a user