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

@@ -51,7 +51,7 @@ namespace FlaxEditor.Modules
/// <summary> /// <summary>
/// The content finding context menu. /// The content finding context menu.
/// </summary> /// </summary>
public ContentFinder Finder => _finder ?? (_finder = new ContentFinder()); internal ContentFinder Finder => _finder ?? (_finder = new ContentFinder());
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ContentFindingModule"/> class. /// Initializes a new instance of the <see cref="ContentFindingModule"/> class.

View File

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

View File

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