internal static string DoTextField(EditorGUI.RecycledTextEditor editor, int id, Rect position, string text, GUIStyle style, string allowedletters, out bool changed, bool reset, bool multiline, bool passwordField) { Event current = Event.current; string str1 = text; if (text == null) text = string.Empty; if (EditorGUI.showMixedValue) text = string.Empty; if (EditorGUI.HasKeyboardFocus(id) && Event.current.type != EventType.Layout) { if (editor.IsEditingControl(id)) { editor.position = position; editor.style = style; editor.controlID = id; editor.multiline = multiline; editor.isPasswordField = passwordField; editor.DetectFocusChange(); } else if (EditorGUIUtility.editingTextField) { editor.BeginEditing(id, text, position, style, multiline, passwordField); if ((double) GUI.skin.settings.cursorColor.a > 0.0) editor.SelectAll(); } } if (editor.controlID == id && GUIUtility.keyboardControl != id) editor.controlID = 0; bool flag1 = false; string text1 = editor.text; EventType typeForControl = current.GetTypeForControl(id); switch (typeForControl) { case EventType.MouseDown: if (position.Contains(current.mousePosition) && current.button == 0) { if (editor.IsEditingControl(id)) { if (Event.current.clickCount == 2 && GUI.skin.settings.doubleClickSelectsWord) { editor.MoveCursorToPosition(Event.current.mousePosition); editor.SelectCurrentWord(); editor.MouseDragSelectsWholeWords(true); editor.DblClickSnap(TextEditor.DblClickSnapping.WORDS); EditorGUI.s_DragToPosition = false; } else if (Event.current.clickCount == 3 && GUI.skin.settings.tripleClickSelectsLine) { editor.MoveCursorToPosition(Event.current.mousePosition); editor.SelectCurrentParagraph(); editor.MouseDragSelectsWholeWords(true); editor.DblClickSnap(TextEditor.DblClickSnapping.PARAGRAPHS); EditorGUI.s_DragToPosition = false; } else { editor.MoveCursorToPosition(Event.current.mousePosition); EditorGUI.s_SelectAllOnMouseUp = false; } } else { GUIUtility.keyboardControl = id; editor.BeginEditing(id, text, position, style, multiline, passwordField); editor.MoveCursorToPosition(Event.current.mousePosition); if ((double) GUI.skin.settings.cursorColor.a > 0.0) EditorGUI.s_SelectAllOnMouseUp = true; } GUIUtility.hotControl = id; current.Use(); break; } break; case EventType.MouseUp: if (GUIUtility.hotControl == id) { if (EditorGUI.s_Dragged && EditorGUI.s_DragToPosition) { editor.MoveSelectionToAltCursor(); flag1 = true; } else if (EditorGUI.s_PostPoneMove) editor.MoveCursorToPosition(Event.current.mousePosition); else if (EditorGUI.s_SelectAllOnMouseUp) { if ((double) GUI.skin.settings.cursorColor.a > 0.0) editor.SelectAll(); EditorGUI.s_SelectAllOnMouseUp = false; } editor.MouseDragSelectsWholeWords(false); EditorGUI.s_DragToPosition = true; EditorGUI.s_Dragged = false; EditorGUI.s_PostPoneMove = false; if (current.button == 0) { GUIUtility.hotControl = 0; current.Use(); break; } break; } break; case EventType.MouseDrag: if (GUIUtility.hotControl == id) { if (!current.shift && editor.hasSelection && EditorGUI.s_DragToPosition) { editor.MoveAltCursorToPosition(Event.current.mousePosition); } else { if (current.shift) editor.MoveCursorToPosition(Event.current.mousePosition); else editor.SelectToPosition(Event.current.mousePosition); EditorGUI.s_DragToPosition = false; EditorGUI.s_SelectAllOnMouseUp = !editor.hasSelection; } EditorGUI.s_Dragged = true; current.Use(); break; } break; case EventType.KeyDown: if (GUIUtility.keyboardControl == id) { char character = current.character; if (editor.IsEditingControl(id) && editor.HandleKeyEvent(current)) { current.Use(); flag1 = true; break; } if (current.keyCode == KeyCode.Escape) { if (editor.IsEditingControl(id)) { if (style == EditorStyles.toolbarSearchField || style == EditorStyles.searchField) EditorGUI.s_OriginalText = string.Empty; editor.text = EditorGUI.s_OriginalText; editor.EndEditing(); flag1 = true; break; } break; } if ((int) character == 10 || (int) character == 3) { if (!editor.IsEditingControl(id)) { editor.BeginEditing(id, text, position, style, multiline, passwordField); editor.SelectAll(); } else if (!multiline || current.alt || (current.shift || current.control)) { editor.EndEditing(); } else { editor.Insert(character); flag1 = true; break; } current.Use(); break; } if ((int) character == 9 || current.keyCode == KeyCode.Tab) { if (multiline && editor.IsEditingControl(id)) { bool flag2 = allowedletters == null || allowedletters.IndexOf(character) != -1; if (!current.alt && !current.shift && !current.control && (int) character == 9 && flag2) { editor.Insert(character); flag1 = true; break; } break; } break; } if ((int) character != 25 && (int) character != 27 && editor.IsEditingControl(id)) { if ((allowedletters == null || allowedletters.IndexOf(character) != -1) && (int) character != 0) { editor.Insert(character); flag1 = true; break; } if (Input.compositionString != string.Empty) { editor.ReplaceSelection(string.Empty); flag1 = true; } current.Use(); break; } break; } break; case EventType.Repaint: string str2 = !editor.IsEditingControl(id) ? (!EditorGUI.showMixedValue ? (!passwordField ? text : string.Empty.PadRight(text.Length, '*')) : EditorGUI.s_MixedValueContent.text) : (!passwordField ? editor.text : string.Empty.PadRight(editor.text.Length, '*')); if (!string.IsNullOrEmpty(EditorGUI.s_UnitString) && !passwordField) str2 = str2 + " " + EditorGUI.s_UnitString; if (GUIUtility.hotControl == 0) EditorGUIUtility.AddCursorRect(position, MouseCursor.Text); if (!editor.IsEditingControl(id)) { EditorGUI.BeginHandleMixedValueContentColor(); style.Draw(position, EditorGUIUtility.TempContent(str2), id, false); EditorGUI.EndHandleMixedValueContentColor(); break; } editor.DrawCursor(str2); break; default: switch (typeForControl - 13) { case EventType.MouseDown: if (GUIUtility.keyboardControl == id) { string commandName = current.commandName; if (commandName != null) { // ISSUE: reference to a compiler-generated field if (EditorGUI.\u003C\u003Ef__switch\u0024map0 == null) { // ISSUE: reference to a compiler-generated field EditorGUI.\u003C\u003Ef__switch\u0024map0 = new Dictionary<string, int>(6) { { "Cut", 0 }, { "Copy", 0 }, { "Paste", 1 }, { "SelectAll", 2 }, { "UndoRedoPerformed", 3 }, { "Delete", 4 } }; } int num; // ISSUE: reference to a compiler-generated field if (EditorGUI.\u003C\u003Ef__switch\u0024map0.TryGetValue(commandName, out num)) { switch (num) { case 0: if (editor.hasSelection) { current.Use(); break; } break; case 1: if (editor.CanPaste()) { current.Use(); break; } break; case 2: current.Use(); break; case 3: editor.text = text; current.Use(); break; case 4: current.Use(); break; } } else break; } else break; } else break; case EventType.MouseUp: if (GUIUtility.keyboardControl == id) { string commandName = current.commandName; if (commandName != null) { // ISSUE: reference to a compiler-generated field if (EditorGUI.\u003C\u003Ef__switch\u0024map1 == null) { // ISSUE: reference to a compiler-generated field EditorGUI.\u003C\u003Ef__switch\u0024map1 = new Dictionary<string, int>(6) { { "OnLostFocus", 0 }, { "Cut", 1 }, { "Copy", 2 }, { "Paste", 3 }, { "SelectAll", 4 }, { "Delete", 5 } }; } int num; // ISSUE: reference to a compiler-generated field if (EditorGUI.\u003C\u003Ef__switch\u0024map1.TryGetValue(commandName, out num)) { switch (num) { case 0: if (EditorGUI.activeEditor != null) EditorGUI.activeEditor.EndEditing(); current.Use(); break; case 1: editor.BeginEditing(id, text, position, style, multiline, passwordField); editor.Cut(); flag1 = true; break; case 2: editor.Copy(); current.Use(); break; case 3: editor.BeginEditing(id, text, position, style, multiline, passwordField); editor.Paste(); flag1 = true; break; case 4: editor.SelectAll(); current.Use(); break; case 5: editor.BeginEditing(id, text, position, style, multiline, passwordField); if (Application.platform == RuntimePlatform.OSXPlayer || Application.platform == RuntimePlatform.OSXWebPlayer || (Application.platform == RuntimePlatform.OSXDashboardPlayer || Application.platform == RuntimePlatform.OSXEditor) || Application.platform == RuntimePlatform.WebGLPlayer && SystemInfo.operatingSystem.StartsWith("Mac")) editor.Delete(); else editor.Cut(); flag1 = true; current.Use(); break; } } else break; } else break; } else break; case EventType.MouseDrag: if (position.Contains(current.mousePosition)) { if (!editor.IsEditingControl(id)) { GUIUtility.keyboardControl = id; editor.BeginEditing(id, text, position, style, multiline, passwordField); editor.MoveCursorToPosition(Event.current.mousePosition); } EditorGUI.ShowTextEditorPopupMenu(); Event.current.Use(); break; } break; } } if (GUIUtility.keyboardControl == id) GUIUtility.textFieldInput = true; editor.UpdateScrollOffsetIfNeeded(); changed = false; if (flag1) { changed = text1 != editor.text; current.Use(); } if (changed) { GUI.changed = true; return editor.text; } EditorGUI.RecycledTextEditor.s_AllowContextCutOrPaste = true; return str1; }