diff --git a/Terminal.Gui/Text/TableCollectionNavigator.cs b/Terminal.Gui/Text/TableCollectionNavigator.cs index cc20129ff..002bd6a8d 100644 --- a/Terminal.Gui/Text/TableCollectionNavigator.cs +++ b/Terminal.Gui/Text/TableCollectionNavigator.cs @@ -11,7 +11,7 @@ public class TableCollectionNavigator : CollectionNavigatorBase /// protected override object ElementAt (int idx) { - int col = tableView.SelectedColumn; + int col = tableView.FullRowSelect ? 0 : tableView.SelectedColumn; object rawValue = tableView.Table [idx, col]; ColumnStyle style = tableView.Style.GetColumnStyleIfAny (col); diff --git a/UnitTests/Views/TableViewTests.cs b/UnitTests/Views/TableViewTests.cs index 6cceed034..54793cf15 100644 --- a/UnitTests/Views/TableViewTests.cs +++ b/UnitTests/Views/TableViewTests.cs @@ -3364,6 +3364,29 @@ A B C Application.Top.Dispose (); } + [Theory] + [InlineData (true, 0, 1)] + [InlineData (true, 1, 1)] + [InlineData (false, 0, 1)] + [InlineData (false, 1, 0)] + public void TableCollectionNavigator_FullRowSelect_True_False (bool fullRowSelect, int selectedCol, int expectedRow) + { + TableView tableView = new () { FullRowSelect = fullRowSelect, SelectedColumn = selectedCol}; + tableView.BeginInit (); + tableView.EndInit (); + + DataTable dt = new (); + dt.Columns.Add ("A"); + dt.Columns.Add ("B"); + + dt.Rows.Add (1, 2); + dt.Rows.Add (3, 4); + tableView.Table = new DataTableSource (dt); + tableView.SelectedColumn = selectedCol; + + Assert.Equal (expectedRow, tableView.CollectionNavigator.GetNextMatchingItem (0, "3".ToCharArray () [0])); + } + /// /// Creates 3 views on with the focus in the /// . This is a helper method to setup tests that want to