From 51eb85afec17cca91bf9b8173c66217b9c1abc81 Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 4 Jan 2023 20:27:53 +0000 Subject: [PATCH] Fix recommending parent folder --- Terminal.Gui/Windows/FileDialog2.cs | 15 ++++++++++----- UnitTests/FileDialog2Tests.cs | 4 ++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Terminal.Gui/Windows/FileDialog2.cs b/Terminal.Gui/Windows/FileDialog2.cs index 516abb65d..e65686c6a 100644 --- a/Terminal.Gui/Windows/FileDialog2.cs +++ b/Terminal.Gui/Windows/FileDialog2.cs @@ -430,7 +430,7 @@ namespace Terminal.Gui { return false; } - internal void GenerateSuggestions (params string [] suggestions) + internal void GenerateSuggestions (FileDialogState state, params string [] suggestions) { if (!CursorIsAtEnd()) { return; @@ -446,12 +446,19 @@ namespace Terminal.Gui { var term = path.Substring (last + 1); + if(term.Equals(state?.Directory?.Name)) + { + ClearSuggestions(); + return; + } + // TODO: Be case insensitive on Windows var validSuggestions = suggestions .Where (s => s.StartsWith (term)) .OrderBy (m => m.Length) .ToArray (); + // nothing to suggest if (validSuggestions.Length == 0 || validSuggestions [0].Length == term.Length) { ClearSuggestions (); @@ -479,11 +486,9 @@ namespace Terminal.Gui { e => e.FileSystemInfo is DirectoryInfo d ? d.Name + System.IO.Path.DirectorySeparatorChar : e.FileSystemInfo.Name) - .ToList (); + .ToArray (); - suggestions.Add(state.Directory.Name); - - GenerateSuggestions (suggestions.ToArray()); + GenerateSuggestions (state, suggestions); } internal void SetTextTo (FileSystemInfo fileSystemInfo) diff --git a/UnitTests/FileDialog2Tests.cs b/UnitTests/FileDialog2Tests.cs index bfce55cc2..dbe6fc2dc 100644 --- a/UnitTests/FileDialog2Tests.cs +++ b/UnitTests/FileDialog2Tests.cs @@ -30,7 +30,7 @@ namespace Terminal.Gui.Core { tb.Text = "c:/fish"; tb.CursorPosition = tb.Text.Length; - tb.GenerateSuggestions ("fish", "fishes"); + tb.GenerateSuggestions (null, "fish", "fishes"); // should not report success for autocompletion because we already have that exact // string @@ -48,7 +48,7 @@ namespace Terminal.Gui.Core { tb.Text = @"c:/fi"; tb.CursorPosition = tb.Text.Length; - tb.GenerateSuggestions ("fish", "fishes"); + tb.GenerateSuggestions (null, "fish", "fishes"); Assert.True (tb.AcceptSelectionIfAny ()); Assert.Equal (@"c:\fish", tb.Text);