From 0f77914e69df3760333f73bfa7888ff2d5a76295 Mon Sep 17 00:00:00 2001 From: BDisp Date: Thu, 15 Jul 2021 17:56:19 +0100 Subject: [PATCH] Turning MdiTop as read only. --- Terminal.Gui/Core/Application.cs | 35 ++++++++++++++------------------ 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/Terminal.Gui/Core/Application.cs b/Terminal.Gui/Core/Application.cs index 7ef15a2b3..a880e6f2c 100644 --- a/Terminal.Gui/Core/Application.cs +++ b/Terminal.Gui/Core/Application.cs @@ -83,7 +83,14 @@ namespace Terminal.Gui { /// /// The object used for the application on startup which is true. /// - public static Toplevel MdiTop { get; private set; } + public static Toplevel MdiTop { + get { + if (Top.IsMdiContainer) { + return Top; + } + return null; + } + } /// /// The object used for the application on startup () @@ -275,9 +282,6 @@ namespace Terminal.Gui { SynchronizationContext.SetSynchronizationContext (new MainLoopSyncContext (MainLoop)); } Top = topLevelFactory (); - if (Top.IsMdiContainer) { - MdiTop = Top; - } Current = Top; _initialized = true; } @@ -699,8 +703,7 @@ namespace Terminal.Gui { } } if (toplevel.IsMdiContainer) { - MdiTop = toplevel; - Top = MdiTop; + Top = toplevel; } var refreshDriver = true; @@ -783,7 +786,6 @@ namespace Terminal.Gui { toplevels.Clear (); Current = null; Top = null; - MdiTop = null; MainLoop = null; Driver?.End (); @@ -843,18 +845,15 @@ namespace Terminal.Gui { MdiTop.OnChildClosed (view as Toplevel); } - if (toplevels.Count == 1 && Current == MdiTop) { - MdiTop.OnAllChildClosed (); - if (!MdiTop.IsMdiContainer) { - MdiTop = null; - } - } - if (toplevels.Count == 0) { Current = null; } else { Current = toplevels.Peek (); - SetCurrentAsTop (); + if (toplevels.Count == 1 && Current == MdiTop) { + MdiTop.OnAllChildClosed (); + } else { + SetCurrentAsTop (); + } Refresh (); } } @@ -980,11 +979,7 @@ namespace Terminal.Gui { { if (_initialized && Driver != null) { var top = new T (); - if (top.GetType ().BaseType == typeof (Toplevel)) { - if (MdiTop == null) { - Top = top; - } - } else { + if (top.GetType ().BaseType != typeof (Toplevel)) { throw new ArgumentException (top.GetType ().BaseType.Name); } Run (top, errorHandler);