More adjustment for content finder visibility

This commit is contained in:
Wojtek Figat
2022-05-04 18:37:26 +02:00
parent 7303377358
commit ae63508049
3 changed files with 19 additions and 21 deletions

View File

@@ -14,11 +14,12 @@ namespace FlaxEditor.Windows.Search
/// </summary>
/// <seealso cref="FlaxEditor.GUI.ContextMenu.ContextMenuBase" />
[HideInEditor]
public class ContentFinder : ContextMenuBase
internal class ContentFinder : ContextMenuBase
{
private Panel _resultPanel;
private TextBox _searchBox;
private SearchItem _selectedItem;
private List<SearchItem> _matchedItems = new List<SearchItem>();
/// <summary>
/// Gets or sets the height per item.
@@ -33,12 +34,12 @@ namespace FlaxEditor.Windows.Search
/// <summary>
/// Gets or sets the selected item.
/// </summary>
public SearchItem SelectedItem
internal SearchItem SelectedItem
{
get => _selectedItem;
set
{
if (value == _selectedItem || (value != null && !MatchedItems.Contains(value)))
if (value == _selectedItem || (value != null && !_matchedItems.Contains(value)))
return;
if (_selectedItem != null)
@@ -51,8 +52,7 @@ namespace FlaxEditor.Windows.Search
if (_selectedItem != null)
{
_selectedItem.BackgroundColor = Style.Current.BackgroundSelected;
if (MatchedItems.Count > VisibleItemCount)
if (_matchedItems.Count > VisibleItemCount)
{
_resultPanel.VScrollBar.SmoothingScale = 0;
_resultPanel.ScrollViewTo(_selectedItem);
@@ -65,8 +65,6 @@ namespace FlaxEditor.Windows.Search
/// <summary>
/// Gets actual matched item list.
/// </summary>
public List<SearchItem> MatchedItems { get; } = new List<SearchItem>();
internal bool Hand;
/// <summary>
@@ -97,7 +95,7 @@ namespace FlaxEditor.Windows.Search
private void OnTextChanged()
{
MatchedItems.Clear();
_matchedItems.Clear();
SelectedItem = null;
var results = Editor.Instance.ContentFinding.Search(_searchBox.Text);
@@ -149,7 +147,7 @@ namespace FlaxEditor.Windows.Search
searchItem = new SearchItem(item.Name, item.Type, item.Item, this, itemsWidth, itemHeight);
searchItem.Y = i * itemHeight;
searchItem.Parent = _resultPanel;
MatchedItems.Add(searchItem);
_matchedItems.Add(searchItem);
}
window.ClientSize = new Vector2(window.ClientSize.X, Height * dpiScale);
@@ -184,30 +182,30 @@ namespace FlaxEditor.Windows.Search
{
case KeyboardKeys.ArrowDown:
{
if (MatchedItems.Count == 0)
if (_matchedItems.Count == 0)
return true;
int currentPos;
if (_selectedItem != null)
{
currentPos = MatchedItems.IndexOf(_selectedItem) + 1;
if (currentPos >= MatchedItems.Count)
currentPos = _matchedItems.IndexOf(_selectedItem) + 1;
if (currentPos >= _matchedItems.Count)
currentPos--;
}
else
{
currentPos = 0;
}
SelectedItem = MatchedItems[currentPos];
SelectedItem = _matchedItems[currentPos];
return true;
}
case KeyboardKeys.ArrowUp:
{
if (MatchedItems.Count == 0)
if (_matchedItems.Count == 0)
return true;
int currentPos;
if (_selectedItem != null)
{
currentPos = MatchedItems.IndexOf(_selectedItem) - 1;
currentPos = _matchedItems.IndexOf(_selectedItem) - 1;
if (currentPos < 0)
currentPos = 0;
}
@@ -215,7 +213,7 @@ namespace FlaxEditor.Windows.Search
{
currentPos = 0;
}
SelectedItem = MatchedItems[currentPos];
SelectedItem = _matchedItems[currentPos];
return true;
}
case KeyboardKeys.Return:
@@ -225,10 +223,10 @@ namespace FlaxEditor.Windows.Search
Hide();
Editor.Instance.ContentFinding.Open(_selectedItem.Item);
}
else if (_selectedItem == null && _searchBox.TextLength != 0 && MatchedItems.Count != 0)
else if (_selectedItem == null && _searchBox.TextLength != 0 && _matchedItems.Count != 0)
{
Hide();
Editor.Instance.ContentFinding.Open(MatchedItems[0].Item);
Editor.Instance.ContentFinding.Open(_matchedItems[0].Item);
}
return true;
}

View File

@@ -11,7 +11,7 @@ namespace FlaxEditor.Windows.Search
/// The <see cref="ContentFinder"/> item.
/// </summary>
[HideInEditor]
public class SearchItem : ContainerControl
internal class SearchItem : ContainerControl
{
private ContentFinder _finder;
@@ -117,7 +117,7 @@ namespace FlaxEditor.Windows.Search
/// </summary>
/// <seealso cref="FlaxEditor.Windows.Search.SearchItem" />
/// <seealso cref="FlaxEditor.Content.IContentItemOwner" />
public class AssetSearchItem : SearchItem, IContentItemOwner
internal class AssetSearchItem : SearchItem, IContentItemOwner
{
private AssetItem _asset;
private FlaxEditor.GUI.ContextMenu.ContextMenu _cm;