diff --git a/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/GameData/ConformalDecals/Plugins/ConformalDecals.dll index f4e5a10..259b824 100644 Binary files a/GameData/ConformalDecals/Plugins/ConformalDecals.dll and b/GameData/ConformalDecals/Plugins/ConformalDecals.dll differ diff --git a/Source/ConformalDecals/UI/TextEntryController.cs b/Source/ConformalDecals/UI/TextEntryController.cs index aded7bf..8a783b0 100644 --- a/Source/ConformalDecals/UI/TextEntryController.cs +++ b/Source/ConformalDecals/UI/TextEntryController.cs @@ -11,7 +11,6 @@ namespace ConformalDecals.UI { [Serializable] public delegate void TextUpdateDelegate(string newText, DecalFont newFont, FontStyles style, bool vertical, float linespacing, float charspacing); - [SerializeField] private Selectable _textBox; [SerializeField] private Button _fontButton; @@ -40,7 +39,10 @@ namespace ConformalDecals.UI { private FontMenuController _fontMenu; - private bool _ignoreUpdates; + private bool _ignoreUpdates; + private bool _isLocked; + private string _lockString; + private static int _lockCounter; public static TextEntryController Create( string text, DecalFont font, FontStyles style, bool vertical, float linespacing, float charspacing, @@ -70,6 +72,18 @@ namespace ConformalDecals.UI { Destroy(gameObject); } + public void SetControlLock(string value = null) { + if (_isLocked) return; + InputLockManager.SetControlLock(_lockString); + _isLocked = true; + } + + public void RemoveControlLock(string value = null) { + if (!_isLocked) return; + InputLockManager.RemoveControlLock(_lockString); + _isLocked = false; + } + public void OnTextUpdate(string newText) { this._text = newText; @@ -195,12 +209,15 @@ namespace ConformalDecals.UI { OnValueChanged(); } - private void Start() { + _lockString = $"ConformalDecals_TextEditor_{_lockCounter++}"; + _textBoxTMP = ((TMP_InputField) _textBox); _textBoxTMP.text = _text; _textBoxTMP.textComponent.fontStyle = _style | _font.FontStyle & ~_font.FontStyleMask; _textBoxTMP.fontAsset = _font.FontAsset; + _textBoxTMP.onSelect.AddListener(SetControlLock); + _textBoxTMP.onDeselect.AddListener(RemoveControlLock); _font.SetupSample(_fontButton.GetComponentInChildren()); @@ -209,6 +226,10 @@ namespace ConformalDecals.UI { UpdateCharSpacing(); } + private void OnDestroy() { + RemoveControlLock(); + } + private void OnValueChanged() { _onValueChanged(_text, _font, _style, _vertical, _lineSpacing, _charSpacing); }