-
Notifications
You must be signed in to change notification settings - Fork 0
/
TMP_InputFieldExt.cs
62 lines (49 loc) · 1.8 KB
/
TMP_InputFieldExt.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;
namespace TMPro
{
/// <summary>
/// Editable text input field.
/// </summary>
[AddComponentMenu("UI/TextMeshPro - Input Field EXT", 11)]
public class TMP_InputFieldExt : TMP_InputField
{
[Serializable]
public class OnPositionChangedEvent : UnityEvent<int> { }
/// <summary>
/// Event delegates triggered when carret or string position changed on click.
/// </summary>
[SerializeField]
private OnPositionChangedEvent m_OnPositionChanged = new OnPositionChangedEvent();
public OnPositionChangedEvent onPositionChanged { get { return m_OnPositionChanged; } set { SetPropertyUtilityExt.SetClass(ref m_OnPositionChanged, value); } }
protected void SendOnPositionChanged()
{
if (onPositionChanged != null)
onPositionChanged.Invoke(stringPositionInternal);
}
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
SendOnPositionChanged();
}
static class SetPropertyUtilityExt
{
public static bool SetClass<T>(ref T currentValue, T newValue) where T : class
{
if ((currentValue == null && newValue == null) || (currentValue != null && currentValue.Equals(newValue)))
return false;
currentValue = newValue;
return true;
}
}
}
}