public static bool enter_Inspect_AsList(this IPEGI_ListInspect var, ref int enteredOne, int thisOne, string exitLabel = null) { var changed = false; var outside = enteredOne == -1; if (!var.IsNullOrDestroyed_Obj()) { if (outside) { var.InspectInList(null, thisOne, ref enteredOne).changes(ref changed); } else if (enteredOne == thisOne) { if (exitLabel.IsNullOrEmpty()) { exitLabel = var.GetNameForInspector(); } if (icon.Exit.ClickUnFocus("{0} L {1}".F(icon.Exit.GetText(), var)) || exitLabel.ClickLabel(icon.Exit.GetDescription(), style: PEGI_Styles.ExitLabel)) { enteredOne = -1; } Try_Nested_Inspect(var).changes(ref changed); } } else if (enteredOne == thisOne) { enteredOne = -1; } ef.isFoldedOutOrEntered = enteredOne == thisOne; return(changed); }