From dcd43da6b8155c040060a5cc82eaa7f72467311c Mon Sep 17 00:00:00 2001
From: "Simon (darkside) Jackson" <darkside@zenithmoon.com>
Date: Thu, 24 Sep 2020 21:47:00 +0100
Subject: [PATCH] Updates from testing

---
 .../Controls/ComboBox/AutoCompleteComboBox.cs  | 18 ++++++++++++++----
 Runtime/Scripts/Controls/ComboBox/ComboBox.cs  |  5 ++++-
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/Runtime/Scripts/Controls/ComboBox/AutoCompleteComboBox.cs b/Runtime/Scripts/Controls/ComboBox/AutoCompleteComboBox.cs
index 51ecb75..1350f87 100644
--- a/Runtime/Scripts/Controls/ComboBox/AutoCompleteComboBox.cs
+++ b/Runtime/Scripts/Controls/ComboBox/AutoCompleteComboBox.cs
@@ -95,8 +95,10 @@ namespace UnityEngine.UI.Extensions
 			}
 		}
 
-		//TODO design as foldout for Inspector
-		public Color ValidSelectionTextColor = Color.green;
+        public float DropdownOffset = 10f;
+
+        //TODO design as foldout for Inspector
+        public Color ValidSelectionTextColor = Color.green;
 		public Color MatchingItemsRemainingTextColor = Color.black;
 		public Color NoItemsRemainingTextColor = Color.red;
 
@@ -226,11 +228,19 @@ namespace UnityEngine.UI.Extensions
         /// </summary>
         private void RebuildPanel()
         {
+            if (_isPanelActive) ToggleDropdownPanel();
+
             //panel starts with all options
             _panelItems.Clear();
             _prunedPanelItems.Clear();
             panelObjects.Clear();
 
+            //clear Autocomplete children in scene
+            foreach (Transform child in _itemsPanelRT.transform)
+            {
+                Destroy(child.gameObject);
+            }
+
             foreach (string option in AvailableOptions)
             {
                 _panelItems.Add(option.ToLower());
@@ -334,7 +344,7 @@ namespace UnityEngine.UI.Extensions
 
             if (_panelItems.Count < 1) return;
 
-            float dropdownHeight = _rectTransform.sizeDelta.y * Mathf.Min(_itemsToDisplay, _panelItems.Count);
+            float dropdownHeight = _rectTransform.sizeDelta.y * Mathf.Min(_itemsToDisplay, _panelItems.Count) + DropdownOffset;
 
             _scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, dropdownHeight);
             _scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, _rectTransform.sizeDelta.x);
@@ -395,7 +405,7 @@ namespace UnityEngine.UI.Extensions
         /// Toggle the drop down list
         /// </summary>
         /// <param name="directClick"> whether an item was directly clicked on</param>
-        public void ToggleDropdownPanel(bool directClick)
+        public void ToggleDropdownPanel(bool directClick = false)
         {
             _isPanelActive = !_isPanelActive;
 
diff --git a/Runtime/Scripts/Controls/ComboBox/ComboBox.cs b/Runtime/Scripts/Controls/ComboBox/ComboBox.cs
index 02da2ff..f0b7bbe 100644
--- a/Runtime/Scripts/Controls/ComboBox/ComboBox.cs
+++ b/Runtime/Scripts/Controls/ComboBox/ComboBox.cs
@@ -21,6 +21,9 @@ namespace UnityEngine.UI.Extensions
         [SerializeField]
         private int _itemsToDisplay;
 
+        [SerializeField]
+        private bool _sortItems = true;
+
         [System.Serializable]
         public class SelectionChangedEvent : UnityEngine.Events.UnityEvent<string>
         {
@@ -178,7 +181,7 @@ namespace UnityEngine.UI.Extensions
             {
                 _panelItems.Add(option.ToLower());
             }
-            _panelItems.Sort();
+            if(_sortItems) _panelItems.Sort();
 
             List<GameObject> itemObjs = new List<GameObject>(panelObjects.Values);
             panelObjects.Clear();