#nullable enable namespace Terminal.Gui; /// /// Handles bespoke behaviours that occur when application top level changes. /// public class ToplevelTransitionManager : IToplevelTransitionManager { private readonly HashSet _readiedTopLevels = new (); private View? _lastTop; /// public void RaiseReadyEventIfNeeded () { Toplevel? top = Application.Top; if (top != null && !_readiedTopLevels.Contains (top)) { top.OnReady (); _readiedTopLevels.Add (top); } } /// public void HandleTopMaybeChanging () { Toplevel? newTop = Application.Top; if (_lastTop != null && _lastTop != newTop && newTop != null) { newTop.SetNeedsDraw (); } _lastTop = Application.Top; } }