فهرست منبع

Fix ResetState to properly reset all fields

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

Co-authored-by: tig <[email protected]>
copilot-swe-agent[bot] 1 ماه پیش
والد
کامیت
c547586533
3فایلهای تغییر یافته به همراه15 افزوده شده و 0 حذف شده
  1. 6 0
      Terminal.Gui/App/Application.Driver.cs
  2. 1 0
      Terminal.Gui/App/Application.Run.cs
  3. 8 0
      Terminal.Gui/App/ApplicationImpl.cs

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

+ 1 - 0
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;
     }
 
     /// <summary>Building block API: Prepares the provided <see cref="Toplevel"/> for execution.</summary>

+ 8 - 0
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: