/// <summary> /// Adds the current control to the current focus context /// </summary> /// <param name="c">The control to add</param> internal void Add(ConsoleControl c) { if (focusStack.Peek().Controls.Contains(c)) { throw new InvalidOperationException("Item already being tracked"); } focusStack.Peek().Controls.Add(c); if (c.Id != null && c.Id == currentFocusedControlId) { c.TryFocus(); } c.SubscribeForLifetime(nameof(c.CanFocus), () => { if (c.CanFocus == false && c.HasFocus) { TryMoveFocus(); } }, c); }