Merge pull request #3468 from BDisp/v2_3467_views-without-subviews-cursor-fix

Fixes #3467. Views without subviews can't show the cursor.
This commit is contained in:
Tig
2024-05-10 11:56:23 -06:00
committed by GitHub
2 changed files with 10 additions and 6 deletions

View File

@@ -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);

View File

@@ -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);
}
}