198 lines
4.7 KiB
C#
198 lines
4.7 KiB
C#
using System;
|
|
|
|
namespace UnityEngine.Experimental.UIElements
|
|
{
|
|
// Token: 0x0200032A RID: 810
|
|
internal class IMKeyboardTextField : IMTextField
|
|
{
|
|
// Token: 0x060032FD RID: 13053 RVA: 0x0004ED34 File Offset: 0x0004CF34
|
|
public override bool OnGUI(Event evt)
|
|
{
|
|
base.SyncTextEditor();
|
|
this.m_Changed = false;
|
|
bool flag = false;
|
|
switch (evt.type)
|
|
{
|
|
case EventType.MouseDown:
|
|
flag = this.DoMouseDown(new MouseEventArgs(evt.mousePosition, evt.clickCount, evt.modifiers));
|
|
break;
|
|
case EventType.MouseUp:
|
|
flag = this.DoMouseUp(new MouseEventArgs(evt.mousePosition, evt.clickCount, evt.modifiers));
|
|
break;
|
|
case EventType.MouseDrag:
|
|
flag = this.DoMouseDrag(new MouseEventArgs(evt.mousePosition, evt.clickCount, evt.modifiers));
|
|
break;
|
|
case EventType.KeyDown:
|
|
flag = this.DoKeyDown(new KeyboardEventArgs(evt.character, evt.keyCode, evt.modifiers));
|
|
break;
|
|
case EventType.Repaint:
|
|
this.DoRepaint(new StylePainter(evt.mousePosition));
|
|
break;
|
|
}
|
|
if (flag)
|
|
{
|
|
evt.Use();
|
|
}
|
|
if (GUIUtility.keyboardControl == base.id)
|
|
{
|
|
GUIUtility.textFieldInput = true;
|
|
}
|
|
if (this.m_Changed)
|
|
{
|
|
GUI.changed = true;
|
|
base.text = base.editor.text;
|
|
if (base.maxLength >= 0 && base.text.Length > base.maxLength)
|
|
{
|
|
base.text = base.text.Substring(0, base.maxLength);
|
|
}
|
|
evt.Use();
|
|
}
|
|
base.editor.UpdateScrollOffsetIfNeeded(evt);
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x060032FE RID: 13054 RVA: 0x0004EEC4 File Offset: 0x0004D0C4
|
|
internal override void DoRepaint(IStylePainter args)
|
|
{
|
|
if (GUIUtility.keyboardControl != base.id)
|
|
{
|
|
base.style.Draw(base.position, GUIContent.Temp(base.text), base.id, false);
|
|
}
|
|
else
|
|
{
|
|
base.editor.DrawCursor(base.text);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060032FF RID: 13055 RVA: 0x0004EF20 File Offset: 0x0004D120
|
|
protected override bool DoMouseDown(MouseEventArgs args)
|
|
{
|
|
bool flag;
|
|
if (base.position.Contains(args.mousePosition))
|
|
{
|
|
GUIUtility.hotControl = base.id;
|
|
GUIUtility.keyboardControl = base.id;
|
|
base.editor.m_HasFocus = true;
|
|
base.editor.MoveCursorToPosition(args.mousePosition);
|
|
if (args.clickCount == 2 && GUI.skin.settings.doubleClickSelectsWord)
|
|
{
|
|
base.editor.SelectCurrentWord();
|
|
base.editor.DblClickSnap(TextEditor.DblClickSnapping.WORDS);
|
|
base.editor.MouseDragSelectsWholeWords(true);
|
|
}
|
|
else if (args.clickCount == 3 && GUI.skin.settings.tripleClickSelectsLine)
|
|
{
|
|
base.editor.SelectCurrentParagraph();
|
|
base.editor.MouseDragSelectsWholeWords(true);
|
|
base.editor.DblClickSnap(TextEditor.DblClickSnapping.PARAGRAPHS);
|
|
}
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06003300 RID: 13056 RVA: 0x0004F020 File Offset: 0x0004D220
|
|
protected override bool DoMouseUp(MouseEventArgs args)
|
|
{
|
|
bool flag;
|
|
if (GUIUtility.hotControl == base.id)
|
|
{
|
|
base.editor.MouseDragSelectsWholeWords(false);
|
|
GUIUtility.hotControl = 0;
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06003301 RID: 13057 RVA: 0x0004F060 File Offset: 0x0004D260
|
|
protected override bool DoMouseDrag(MouseEventArgs args)
|
|
{
|
|
bool flag;
|
|
if (GUIUtility.hotControl == base.id)
|
|
{
|
|
if (args.shift)
|
|
{
|
|
base.editor.MoveCursorToPosition(args.mousePosition);
|
|
}
|
|
else
|
|
{
|
|
base.editor.SelectToPosition(args.mousePosition);
|
|
}
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06003302 RID: 13058 RVA: 0x0004F0C4 File Offset: 0x0004D2C4
|
|
protected override bool DoKeyDown(KeyboardEventArgs args)
|
|
{
|
|
bool flag;
|
|
if (GUIUtility.keyboardControl != base.id)
|
|
{
|
|
flag = false;
|
|
}
|
|
else if (base.editor.HandleKeyEvent(args.ToEvent()))
|
|
{
|
|
this.m_Changed = true;
|
|
base.text = base.editor.text;
|
|
flag = true;
|
|
}
|
|
else if (args.keyCode == KeyCode.Tab || args.character == '\t')
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
char character = args.character;
|
|
if (character == '\n' && !base.multiline && !args.alt)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
Font font = base.style.font;
|
|
if (font == null)
|
|
{
|
|
font = GUI.skin.font;
|
|
}
|
|
if (font.HasCharacter(character) || character == '\n')
|
|
{
|
|
base.editor.Insert(character);
|
|
this.m_Changed = true;
|
|
flag = character == '\n';
|
|
}
|
|
else if (character == '\0')
|
|
{
|
|
if (Input.compositionString.Length > 0)
|
|
{
|
|
base.editor.ReplaceSelection("");
|
|
this.m_Changed = true;
|
|
}
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x04000A6C RID: 2668
|
|
private bool m_Changed;
|
|
}
|
|
}
|