Replaced OnSelectionChanged with event(s) accessible from the inspector (DropDownList & AutoCompleteComboBox)

pull/413/head
LARS-LAPTOP2\larsme 2017-03-27 14:33:08 +02:00
parent 6565b1a6d1
commit 8549c3ba6a
2 changed files with 39 additions and 4 deletions

View File

@ -15,8 +15,6 @@ namespace UnityEngine.UI.Extensions
public List<string> AvailableOptions;
public System.Action<int> OnSelectionChanged; // fires when selection is changed;
//private bool isInitialized = false;
private bool _isPanelActive = false;
private bool _hasDrawnOnce = false;
@ -134,6 +132,27 @@ namespace UnityEngine.UI.Extensions
private bool _selectionIsValid = false;
[System.Serializable]
public class SelectionChangedEvent : UnityEngine.Events.UnityEvent<string, bool> {
}
[System.Serializable]
public class SelectinTextChangedEvent : UnityEngine.Events.UnityEvent<string> {
}
[System.Serializable]
public class SelectionValidityChangedEvent : UnityEngine.Events.UnityEvent<bool> {
}
// fires when input text is changed;
public SelectinTextChangedEvent OnSelectinTextChanged;
// fires when when an Item gets selected / deselected (including when items are added/removed once this is possible)
public SelectionValidityChangedEvent OnSelectionValidityChanged;
// fires in both cases
public SelectionChangedEvent OnSelectionChanged;
public void Awake()
{
Initialize();
@ -369,7 +388,15 @@ namespace UnityEngine.UI.Extensions
{
ToggleDropdownPanel(false);
}
bool validity_changed = (_panelItems.Contains (Text) == _selectionIsValid);
_selectionIsValid = _panelItems.Contains (Text);
OnSelectionChanged.Invoke (Text, _selectionIsValid);
OnSelectinTextChanged.Invoke (Text);
if(validity_changed){
OnSelectionValidityChanged.Invoke (_selectionIsValid);
}
SetInputTextColor ();
}

View File

@ -17,7 +17,6 @@ namespace UnityEngine.UI.Extensions
public DropDownListItem SelectedItem { get; private set; } //outside world gets to get this, not set it
public List<DropDownListItem> Items;
public System.Action<int> OnSelectionChanged; // fires when selection is changed;
public bool OverrideHighlighted = true;
//private bool isInitialized = false;
@ -109,6 +108,15 @@ namespace UnityEngine.UI.Extensions
public bool SelectFirstItemOnStart = false;
[System.Serializable]
public class SelectionChangedEvent : UnityEngine.Events.UnityEvent<int> {
}
// fires when item is changed;
public SelectionChangedEvent OnSelectionChanged;
public void Start()
{
Initialize();
@ -239,7 +247,7 @@ namespace UnityEngine.UI.Extensions
private void OnItemClicked(int indx)
{
Debug.Log("item " + indx + " clicked");
if (indx != _selectedIndex && OnSelectionChanged != null) OnSelectionChanged(indx);
if (indx != _selectedIndex && OnSelectionChanged != null) OnSelectionChanged.Invoke(indx);
_selectedIndex = indx;
ToggleDropdownPanel(true);