/// <summary> Call this when a text field control is clicked. </summary> /// <param name="subject"> The clicked text field drawer. </param> /// <param name="inputEvent"> The current input event. </param> public static void OnControlClicked(ITextFieldDrawer subject, Event inputEvent) { bool canStartEditing = CanStartEditing(subject); // if field was already selected when it was clicked, don't use the event // this way Unity can handle positioning the cursor in a specific point on the text field etc. if (subject.Selected) { #if DEV_MODE && DEBUG_EDITING_TEXT_FIELD Debug.Log(StringUtils.ToColorizedString("TextFieldUtility.OnControlClicked - DrawGUI.EditingTextField = ", canStartEditing, " (because was selected)")); #endif DrawGUI.EditingTextField = canStartEditing; return; } DrawGUI.Use(inputEvent); subject.HandleOnClickSelection(inputEvent, ReasonSelectionChanged.ControlClicked); if (canStartEditing) { #if DEV_MODE && DEBUG_EDITING_TEXT_FIELD Debug.Log(StringUtils.ToColorizedString("TextFieldUtility.OnControlClicked - Calling StartEditingField (not selected and can start editing)")); #endif subject.StartEditingField(); } else { #if DEV_MODE && DEBUG_EDITING_TEXT_FIELD Debug.Log(StringUtils.ToColorizedString("TextFieldUtility.OnControlClicked - DrawGUI.EditingTextField = ", false, " (because was can start editing was ", false, ")")); #endif DrawGUI.EditingTextField = false; } }
public static bool CanStartEditingField(ITextFieldDrawer target) { return(!target.ReadOnly && !InspectorUtility.ActiveManager.HasMultiSelectedControls); }