simplify and fix edge case in item list scrolling while holding control

This commit is contained in:
Saas
2025-07-09 18:41:41 +02:00
parent 0bc595f16f
commit 50871d8885

View File

@@ -514,19 +514,14 @@ namespace FlaxEditor.GUI
var items = ItemsPanel.Children;
for (int i = 0; i < items.Count; i++)
{
if (items[i] is Item item && item.Visible)
result.Add(item);
}
if (_categoryPanels != null)
{
for (int i = 0; i < _categoryPanels.Count; i++)
var item = items[i];
if (item is Item item1 && item1.Visible)
result.Add(item1);
else if (!ignoreFoldedCategories && item is DropPanel panel && item.Visible)
{
var category = _categoryPanels[i];
if (!category.Visible || (ignoreFoldedCategories && category is DropPanel panel && panel.IsClosed))
continue;
for (int j = 0; j < category.Children.Count; j++)
for (int j = 0; j < panel.Children.Count; j++)
{
if (category.Children[j] is Item item2 && item2.Visible)
if (panel.Children[j] is Item item2 && item2.Visible)
result.Add(item2);
}
}
@@ -591,10 +586,6 @@ namespace FlaxEditor.GUI
var items = GetVisibleItems(!controlDown);
var focusedIndex = items.IndexOf(focusedItem);
// If the user hasn't selected anything yet and is holding control, focus first folded item
if (focusedIndex == -1 && controlDown)
focusedIndex = GetVisibleItems(true).Count - 1;
int delta = key == KeyboardKeys.ArrowDown ? -1 : 1;
int nextIndex = Mathf.Wrap(focusedIndex - delta, 0, items.Count - 1);
var nextItem = items[nextIndex];