diff --git a/Terminal.Gui/App/Application.Driver.cs b/Terminal.Gui/App/Application.Driver.cs
index aa2ee80fe..3671ee519 100644
--- a/Terminal.Gui/App/Application.Driver.cs
+++ b/Terminal.Gui/App/Application.Driver.cs
@@ -6,6 +6,12 @@ public static partial class Application // Driver abstractions
{
internal static bool _forceFakeConsole;
+ // Internal helper method for ApplicationImpl.ResetState to clear this field
+ internal static void ClearForceFakeConsole ()
+ {
+ _forceFakeConsole = false;
+ }
+
/// Gets the that has been selected. See also .
public static IConsoleDriver? Driver
{
diff --git a/Terminal.Gui/App/Application.Run.cs b/Terminal.Gui/App/Application.Run.cs
index 2aba0f7e3..d6dbb6728 100644
--- a/Terminal.Gui/App/Application.Run.cs
+++ b/Terminal.Gui/App/Application.Run.cs
@@ -46,6 +46,7 @@ public static partial class Application // Run (Begin -> Run -> Layout/Draw -> E
{
NotifyNewRunState = null;
NotifyStopRunState = null;
+ Iteration = null;
}
/// Building block API: Prepares the provided for execution.
diff --git a/Terminal.Gui/App/ApplicationImpl.cs b/Terminal.Gui/App/ApplicationImpl.cs
index 007af49ae..decbfe5d8 100644
--- a/Terminal.Gui/App/ApplicationImpl.cs
+++ b/Terminal.Gui/App/ApplicationImpl.cs
@@ -633,6 +633,11 @@ public class ApplicationImpl : IApplication
_cachedRunStateToplevel = null;
_mainThreadId = -1;
+
+ // These static properties need to be reset
+ Application.EndAfterFirstIteration = false;
+ Application.ClearScreenNextIteration = false;
+ Application.ClearForceFakeConsole ();
// Driver stuff
if (_driver is { })
@@ -664,6 +669,9 @@ public class ApplicationImpl : IApplication
_navigation = null;
+ // Reset SupportedCultures so it's re-cached on next access
+ _supportedCultures = null;
+
// Reset synchronization context to allow the user to run async/await,
// as the main loop has been ended, the synchronization context from
// gui.cs does no longer process any callbacks. See #1084 for more details: