diff --git a/Terminal.Gui/Views/ComboBox.cs b/Terminal.Gui/Views/ComboBox.cs index ddf24086d..7d450946d 100644 --- a/Terminal.Gui/Views/ComboBox.cs +++ b/Terminal.Gui/Views/ComboBox.cs @@ -759,13 +759,13 @@ namespace Terminal.Gui { isShow = false; } - private int GetSelectedItemFromSource (string value) + private int GetSelectedItemFromSource (string searchText) { - if (source == null) { + if (source is null) { return -1; } - for (int i = 0; i < source.Count; i++) { - if (source.ToList () [i].ToString () == value) { + for (int i = 0; i < searchset.Count; i++) { + if (searchset [i].ToString () == searchText) { return i; } } @@ -815,13 +815,16 @@ namespace Terminal.Gui { private void Search_Changed (object sender, TextChangedEventArgs e) { - if (source == null) { // Object initialization + if (source is null) { // Object initialization return; } if (string.IsNullOrEmpty (search.Text) && string.IsNullOrEmpty (e.OldValue)) { ResetSearchSet (); } else if (search.Text != e.OldValue) { + if (search.Text.Length < e.OldValue.Length) { + selectedItem = -1; + } isShow = true; ResetSearchSet (noCopy: true); diff --git a/UnitTests/Views/ComboBoxTests.cs b/UnitTests/Views/ComboBoxTests.cs index a6f675674..877b4a965 100644 --- a/UnitTests/Views/ComboBoxTests.cs +++ b/UnitTests/Views/ComboBoxTests.cs @@ -215,17 +215,17 @@ Three Assert.True (cb.NewKeyDownEvent (new (KeyCode.CursorDown))); // losing focus Assert.False (cb.HasFocus); Assert.False (cb.IsShow); - Assert.Equal (0, cb.SelectedItem); + Assert.Equal (-1, cb.SelectedItem); Assert.Equal ("One", cb.Text); Application.Top.FocusFirst (); // Gets focus again Assert.True (cb.HasFocus); Assert.False (cb.IsShow); - Assert.Equal (0, cb.SelectedItem); + Assert.Equal (-1, cb.SelectedItem); Assert.Equal ("One", cb.Text); Assert.True (cb.NewKeyDownEvent (new (KeyCode.U | KeyCode.CtrlMask))); Assert.True (cb.HasFocus); Assert.True (cb.IsShow); - Assert.Equal (0, cb.SelectedItem); + Assert.Equal (-1, cb.SelectedItem); Assert.Equal ("", cb.Text); Assert.Equal (3, cb.Source.Count); } @@ -256,7 +256,7 @@ Three Assert.Equal ("One", cb.Text); cb.Text = "T"; Assert.True (cb.IsShow); - Assert.Equal (0, cb.SelectedItem); + Assert.Equal (-1, cb.SelectedItem); Assert.Equal ("T", cb.Text); Assert.True (cb.NewKeyDownEvent (new (KeyCode.Enter))); Assert.False (cb.IsShow);