diff --git a/Terminal.Gui/Application.cs b/Terminal.Gui/Application.cs index 28322e916..d1a42be2b 100644 --- a/Terminal.Gui/Application.cs +++ b/Terminal.Gui/Application.cs @@ -574,10 +574,16 @@ public static partial class Application if (mostFocused is null) { - return false; + if (view is { HasFocus: true }) + { + mostFocused = view; + } + else + { + return false; + } } - // If the view is not visible or enabled, don't position the cursor if (!mostFocused.Visible || !mostFocused.Enabled) { @@ -598,7 +604,6 @@ public static partial class Application return false; } - Point? prevCursor = new (Driver.Row, Driver.Col); Point? cursor = mostFocused.PositionCursor (); Driver.GetCursorVisibility (out CursorVisibility currentCursorVisibility); diff --git a/UnitTests/Application/CursorTests.cs b/UnitTests/Application/CursorTests.cs index 151b2926d..337003b0f 100644 --- a/UnitTests/Application/CursorTests.cs +++ b/UnitTests/Application/CursorTests.cs @@ -111,7 +111,7 @@ public class CursorTests Assert.False (Application.PositionCursor (view)); } - [Fact, Trait("BUGBUG", "Views without subviews don't support Focused or MostFocused")] + [Fact] [SetupFakeDriver] public void PositionCursor_Focused_With_Position_Returns_True () { @@ -124,7 +124,7 @@ public class CursorTests view.CanFocus = true; view.SetFocus (); view.TestLocation = new Point (0, 0); - Assert.False (Application.PositionCursor (view)); // BUGBUG: This should be true + Assert.True (Application.PositionCursor (view)); } [Fact] @@ -144,5 +144,4 @@ public class CursorTests Application.Driver.GetCursorVisibility (out CursorVisibility cursor); Assert.Equal (CursorVisibility.Invisible, cursor); } - }