From b5e3cc2ea50ae98f449ce0ee71059a0c66e42579 Mon Sep 17 00:00:00 2001 From: Sinai <49360850+sinai-dev@users.noreply.github.com> Date: Sun, 24 Apr 2022 01:59:03 +1000 Subject: [PATCH] Use separate TypeCompleters for different contexts --- src/ObjectExplorer/ObjectSearch.cs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/ObjectExplorer/ObjectSearch.cs b/src/ObjectExplorer/ObjectSearch.cs index 6d070f3..452e94a 100644 --- a/src/ObjectExplorer/ObjectSearch.cs +++ b/src/ObjectExplorer/ObjectSearch.cs @@ -34,12 +34,15 @@ namespace UnityExplorer.ObjectExplorer private ScrollPool resultsScrollPool; private List currentResults = new(); + //public TypeCompleter typeAutocompleter; + public TypeCompleter unityObjectTypeCompleter; + public TypeCompleter allTypesCompleter; + public override GameObject UIRoot => uiRoot; private GameObject uiRoot; private GameObject sceneFilterRow; private GameObject childFilterRow; private GameObject classInputRow; - public TypeCompleter typeAutocompleter; private GameObject nameInputRow; private InputFieldRef nameInputField; private Text resultsLabel; @@ -98,14 +101,18 @@ namespace UnityExplorer.ObjectExplorer nameInputRow.SetActive(context == SearchContext.UnityObject); - if (context == SearchContext.Class) - typeAutocompleter.AllTypes = true; - else + switch (context) { - typeAutocompleter.BaseType = context == SearchContext.UnityObject ? typeof(UnityEngine.Object) : typeof(object); - typeAutocompleter.AllTypes = false; + case SearchContext.UnityObject: + unityObjectTypeCompleter.Enabled = true; + allTypesCompleter.Enabled = false; + break; + case SearchContext.Singleton: + case SearchContext.Class: + allTypesCompleter.Enabled = true; + unityObjectTypeCompleter.Enabled = false; + break; } - typeAutocompleter.CacheTypes(); } private void OnSceneFilterDropChanged(int value) => sceneFilter = (SceneFilter)value; @@ -185,7 +192,9 @@ namespace UnityExplorer.ObjectExplorer InputFieldRef classInputField = UIFactory.CreateInputField(classInputRow, "ClassInput", "..."); UIFactory.SetLayoutElement(classInputField.UIRoot, minHeight: 25, flexibleHeight: 0, flexibleWidth: 9999); - typeAutocompleter = new TypeCompleter(typeof(UnityEngine.Object), classInputField); + unityObjectTypeCompleter = new(typeof(UnityEngine.Object), classInputField, true, false, true); + allTypesCompleter = new(null, classInputField, true, false, true); + allTypesCompleter.Enabled = false; classInputField.OnValueChanged += OnTypeInputChanged; //unityObjectClassRow.SetActive(false);