private static void DrawGenericEditableValue(ICacheEntry field, object value, params GUILayoutOption[] layoutParams) { var isBeingEdited = _currentlyEditingTag == field; var text = isBeingEdited ? _currentlyEditingText : ToStringConverter.GetEditValue(field, value); var result = GUILayout.TextField(text, layoutParams); if (!Equals(text, result) || isBeingEdited) { if (_userHasHitReturn) { _currentlyEditingTag = null; _userHasHitReturn = false; ToStringConverter.SetEditValue(field, value, result); } else { _currentlyEditingText = result; _currentlyEditingTag = field; } } }