Fix ResetState to properly reset all fields

- Reset EndAfterFirstIteration and ClearScreenNextIteration
- Reset Iteration event
- Reset _forceFakeConsole field
- Reset _supportedCultures field

Co-authored-by: tig <585482+tig@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-10-26 20:47:52 +00:00
parent 086d6da1e4
commit c547586533
3 changed files with 15 additions and 0 deletions

View File

@@ -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;
}
/// <summary>Gets the <see cref="IConsoleDriver"/> that has been selected. See also <see cref="ForceDriver"/>.</summary>
public static IConsoleDriver? Driver
{

View File

@@ -46,6 +46,7 @@ public static partial class Application // Run (Begin -> Run -> Layout/Draw -> E
{
NotifyNewRunState = null;
NotifyStopRunState = null;
Iteration = null;
}
/// <summary>Building block API: Prepares the provided <see cref="Toplevel"/> for execution.</summary>

View File

@@ -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: