mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-27 08:17:53 +01:00
Merge branch 'develop' into unittest_reorg
This commit is contained in:
@@ -430,7 +430,7 @@ namespace Terminal.Gui {
|
||||
var newItem = KeystrokeNavigator?.GetNextMatchingItem (SelectedItem, (char)kb.KeyValue);
|
||||
if (newItem is int && newItem != -1) {
|
||||
SelectedItem = (int)newItem;
|
||||
EnsuresVisibilitySelectedItem ();
|
||||
EnsureSelectedItemVisible ();
|
||||
SetNeedsDisplay ();
|
||||
return true;
|
||||
}
|
||||
@@ -727,7 +727,7 @@ namespace Terminal.Gui {
|
||||
Application.Driver.SetCursorVisibility (CursorVisibility.Invisible);
|
||||
|
||||
if (lastSelectedItem == -1) {
|
||||
EnsuresVisibilitySelectedItem ();
|
||||
EnsureSelectedItemVisible ();
|
||||
}
|
||||
|
||||
return base.OnEnter (view);
|
||||
@@ -743,7 +743,10 @@ namespace Terminal.Gui {
|
||||
return base.OnLeave (view);
|
||||
}
|
||||
|
||||
void EnsuresVisibilitySelectedItem ()
|
||||
/// <summary>
|
||||
/// Ensures the selected item is always visible on the screen.
|
||||
/// </summary>
|
||||
public void EnsureSelectedItemVisible ()
|
||||
{
|
||||
SuperView?.LayoutSubviews ();
|
||||
if (selected < top) {
|
||||
@@ -840,7 +843,7 @@ namespace Terminal.Gui {
|
||||
if (src == null || src?.Count == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int maxLength = 0;
|
||||
for (int i = 0; i < src.Count; i++) {
|
||||
var t = src [i];
|
||||
@@ -924,7 +927,7 @@ namespace Terminal.Gui {
|
||||
return i;
|
||||
}
|
||||
} else if (t is string s) {
|
||||
if (s.ToUpperInvariant ().StartsWith (search.ToUpperInvariant ())) {
|
||||
if (s.StartsWith (search, StringComparison.InvariantCultureIgnoreCase)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ namespace Terminal.Gui.ViewTests {
|
||||
|
||||
[Fact]
|
||||
[AutoInitShutdown]
|
||||
public void EnsuresVisibilitySelectedItem_Top ()
|
||||
public void EnsureSelectedItemVisible_Top ()
|
||||
{
|
||||
var source = new List<string> () { "First", "Second" };
|
||||
ListView lv = new ListView (source) { Width = Dim.Fill (), Height = 1 };
|
||||
@@ -451,5 +451,67 @@ namespace Terminal.Gui.ViewTests {
|
||||
lv.SetSourceAsync (null);
|
||||
Assert.NotNull (lv.Source);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ListWrapper_StartsWith ()
|
||||
{
|
||||
var lw = new ListWrapper (new List<string> { "One", "Two", "Three" });
|
||||
|
||||
Assert.Equal (1, lw.StartsWith ("t"));
|
||||
Assert.Equal (1, lw.StartsWith ("tw"));
|
||||
Assert.Equal (2, lw.StartsWith ("th"));
|
||||
Assert.Equal (1, lw.StartsWith ("T"));
|
||||
Assert.Equal (1, lw.StartsWith ("TW"));
|
||||
Assert.Equal (2, lw.StartsWith ("TH"));
|
||||
|
||||
lw = new ListWrapper (new List<NStack.ustring> { "One", "Two", "Three" });
|
||||
|
||||
Assert.Equal (1, lw.StartsWith ("t"));
|
||||
Assert.Equal (1, lw.StartsWith ("tw"));
|
||||
Assert.Equal (2, lw.StartsWith ("th"));
|
||||
Assert.Equal (1, lw.StartsWith ("T"));
|
||||
Assert.Equal (1, lw.StartsWith ("TW"));
|
||||
Assert.Equal (2, lw.StartsWith ("TH"));
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void EnsureSelectedItemVisible_SelectedItem ()
|
||||
{
|
||||
var source = new List<string> ();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
source.Add ($"Item {i}");
|
||||
}
|
||||
var lv = new ListView (source) {
|
||||
Width = 10,
|
||||
Height = 5
|
||||
};
|
||||
Application.Top.Add (lv);
|
||||
Application.Begin (Application.Top);
|
||||
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
Item 0
|
||||
Item 1
|
||||
Item 2
|
||||
Item 3
|
||||
Item 4", output);
|
||||
|
||||
lv.SelectedItem = 6;
|
||||
Application.Refresh ();
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
Item 0
|
||||
Item 1
|
||||
Item 2
|
||||
Item 3
|
||||
Item 4", output);
|
||||
|
||||
lv.EnsureSelectedItemVisible ();
|
||||
Application.Refresh ();
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
Item 2
|
||||
Item 3
|
||||
Item 4
|
||||
Item 5
|
||||
Item 6", output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user