瀏覽代碼

Fixes #3467. Views without subviews can't show the cursor.

BDisp 1 年之前
父節點
當前提交
063e58b258
共有 2 個文件被更改,包括 10 次插入6 次删除
  1. 8 3
      Terminal.Gui/Application.cs
  2. 2 3
      UnitTests/Application/CursorTests.cs

+ 8 - 3
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);

+ 2 - 3
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);
     }
-
 }