Merge branch 'xxSeys1-ItemsListExpandOnNavigate'
This commit is contained in:
@@ -227,9 +227,8 @@ namespace FlaxEditor.GUI
|
||||
{
|
||||
int order = -1 * SortScore.CompareTo(otherItem.SortScore);
|
||||
if (order == 0)
|
||||
{
|
||||
order = string.Compare(Name, otherItem.Name, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
return order;
|
||||
}
|
||||
return base.Compare(other);
|
||||
@@ -509,7 +508,7 @@ namespace FlaxEditor.GUI
|
||||
OnSearchFilterChanged();
|
||||
}
|
||||
|
||||
private List<Item> GetVisibleItems()
|
||||
private List<Item> GetVisibleItems(bool ignoreFoldedCategories)
|
||||
{
|
||||
var result = new List<Item>();
|
||||
var items = ItemsPanel.Children;
|
||||
@@ -523,7 +522,7 @@ namespace FlaxEditor.GUI
|
||||
for (int i = 0; i < _categoryPanels.Count; i++)
|
||||
{
|
||||
var category = _categoryPanels[i];
|
||||
if (!category.Visible)
|
||||
if (!category.Visible || (ignoreFoldedCategories && category is DropPanel panel && panel.IsClosed))
|
||||
continue;
|
||||
for (int j = 0; j < category.Children.Count; j++)
|
||||
{
|
||||
@@ -535,6 +534,12 @@ namespace FlaxEditor.GUI
|
||||
return result;
|
||||
}
|
||||
|
||||
private void ExpandToItem(Item item)
|
||||
{
|
||||
if (item.Parent is DropPanel dropPanel)
|
||||
dropPanel.Open(false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnShow()
|
||||
{
|
||||
@@ -564,7 +569,7 @@ namespace FlaxEditor.GUI
|
||||
Hide();
|
||||
return true;
|
||||
case KeyboardKeys.Backspace:
|
||||
// Alow the user to quickly focus the searchbar
|
||||
// Allow the user to quickly focus the searchbar
|
||||
if (_searchBox != null && !_searchBox.IsFocused)
|
||||
{
|
||||
_searchBox.Focus();
|
||||
@@ -582,14 +587,25 @@ namespace FlaxEditor.GUI
|
||||
}
|
||||
|
||||
// Get the next item
|
||||
var items = GetVisibleItems();
|
||||
bool controlDown = Root.GetKey(KeyboardKeys.Control);
|
||||
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];
|
||||
|
||||
// Focus the next item
|
||||
nextItem.Focus();
|
||||
|
||||
// Allow the user to expand groups while scrolling
|
||||
if (controlDown)
|
||||
ExpandToItem(nextItem);
|
||||
|
||||
_scrollPanel.ScrollViewTo(nextItem);
|
||||
return true;
|
||||
case KeyboardKeys.Return:
|
||||
@@ -601,7 +617,7 @@ namespace FlaxEditor.GUI
|
||||
else
|
||||
{
|
||||
// Select first item if no item is focused (most likely to be the best result), saves the user from pressing arrow down first
|
||||
var visibleItems = GetVisibleItems();
|
||||
var visibleItems = GetVisibleItems(true);
|
||||
if (visibleItems.Count > 0)
|
||||
{
|
||||
OnClickItem(visibleItems[0]);
|
||||
|
||||
Reference in New Issue
Block a user