diff --git a/Terminal.Gui/App/Application.Run.cs b/Terminal.Gui/App/Application.Run.cs index 30c1384a3..443e97ade 100644 --- a/Terminal.Gui/App/Application.Run.cs +++ b/Terminal.Gui/App/Application.Run.cs @@ -212,8 +212,16 @@ public static partial class Application // Run (Begin, Run, End, Stop) NotifyNewRunState?.Invoke (toplevel, new (rs)); - // Force an Idle event so that an Iteration (and Refresh) happen. - Invoke (() => { }); + if (!ConsoleDriver.RunningUnitTests) + { + // Force an Idle event to be added to timeout outside the Application.MainThreadId, + // so that an Iteration (and Refresh) happen in the Application.MainThreadId + Task.Run (() => + { + Invoke (() => { }); + Task.Delay (1).Wait (); + }); + } return rs; } diff --git a/Terminal.Gui/ViewBase/View.Drawing.cs b/Terminal.Gui/ViewBase/View.Drawing.cs index 912133e78..a8d2d4bf8 100644 --- a/Terminal.Gui/ViewBase/View.Drawing.cs +++ b/Terminal.Gui/ViewBase/View.Drawing.cs @@ -807,7 +807,7 @@ public partial class View // Drawing APIs } // There was multiple enumeration error here, so calling ToArray - probably a stop gap - foreach (View subview in SubViews.ToArray ()) + foreach (View subview in InternalSubViews) { if (subview.Frame.IntersectsWith (viewPortRelativeRegion)) { diff --git a/Tests/UnitTests/Views/SpinnerViewTests.cs b/Tests/UnitTests/Views/SpinnerViewTests.cs index 6382f8297..a77fa9488 100644 --- a/Tests/UnitTests/Views/SpinnerViewTests.cs +++ b/Tests/UnitTests/Views/SpinnerViewTests.cs @@ -11,6 +11,8 @@ public class SpinnerViewTests (ITestOutputHelper output) [InlineData (false)] public void TestSpinnerView_AutoSpin (bool callStop) { + ConsoleDriver.RunningUnitTests = true; + SpinnerView view = GetSpinnerView (); Assert.Empty (Application.MainLoop.TimedEvents.Timeouts);