Jelajahi Sumber

Fix MoveEnd method.

BDisp 1 tahun lalu
induk
melakukan
5a6e64b756
2 mengubah file dengan 16 tambahan dan 12 penghapusan
  1. 5 1
      Terminal.Gui/Views/ListView.cs
  2. 11 11
      UnitTests/Views/ListViewTests.cs

+ 5 - 1
Terminal.Gui/Views/ListView.cs

@@ -525,7 +525,11 @@ public class ListView : View
 
             if (Viewport.Y + _selected > Viewport.Height - 1)
             {
-                Viewport = Viewport with { Y = _selected };
+                int offset = _selected < Viewport.Height - 1
+                                 ? Math.Max (Viewport.Height - _selected + 1, 0)
+                                 : Math.Max (_selected - Viewport.Height - +1, 0);
+                SetContentSize (Viewport.Size with { Height = Viewport.Height + offset });
+                Viewport = Viewport with { Y = offset };
             }
 
             OnSelectedChanged ();

+ 11 - 11
UnitTests/Views/ListViewTests.cs

@@ -129,16 +129,16 @@ public class ListViewTests
         TestHelpers.AssertDriverContentsWithFrameAre (
                                                       @"
 ┌──────────┐
+│Line10    │
+│Line11    │
+│Line12    │
+│Line13    │
+│Line14    │
+│Line15    │
+│Line16    │
+│Line17    │
+│Line18    │
 │Line19    │
-│          │
-│          │
-│          │
-│          │
-│          │
-│          │
-│          │
-│          │
-│          │
 └──────────┘",
                                                       _output
                                                      );
@@ -255,6 +255,8 @@ public class ListViewTests
         TestHelpers.AssertDriverContentsWithFrameAre (
                                                       @"
 ┌──────────┐
+│Line17    │
+│Line18    │
 │Line19    │
 │          │
 │          │
@@ -263,8 +265,6 @@ public class ListViewTests
 │          │
 │          │
 │          │
-│          │
-│          │
 └──────────┘",
                                                       _output
                                                      );