private void CreatePopup() { _popup = new UnityEditor.UIElements.PopupField <T>(_values, value, Format, Format); _popup.AddToClassList(InputUssClassName); _popup.RegisterCallback <ChangeEvent <T> >(evt => { if (_values.Contains(evt.newValue)) // ChangeEvent<string> is posted by _popup's TextElement but target is still _popup for some reason { base.value = evt.newValue; } evt.StopImmediatePropagation(); }); this.SetVisualInput(_popup); }
public override void Create(VisualElement root) { var enumButtons = new EnumButtonsField("Enum Buttons"); enumButtons.Type = _types[0]; enumButtons.UseFlags = false; enumButtons.RegisterValueChangedCallback(ValueChanged); root.Add(enumButtons); var typePopup = new UnityEditor.UIElements.PopupField <Type>("Type", _types, 0, type => type.Name, type => type.Name); typePopup.RegisterValueChangedCallback(e => enumButtons.Type = e.newValue); root.Add(typePopup); var flagsToggle = new Toggle("Use Flags"); flagsToggle.RegisterValueChangedCallback(e => enumButtons.UseFlags = e.newValue); root.Add(flagsToggle); }
private void DestroyPopup() { _popup?.RemoveFromHierarchy(); _popup = null; }