diff --git a/Terminal.Gui/Views/TableView.cs b/Terminal.Gui/Views/TableView.cs index ac3ff1fc6..1082f68c5 100644 --- a/Terminal.Gui/Views/TableView.cs +++ b/Terminal.Gui/Views/TableView.cs @@ -621,7 +621,7 @@ namespace Terminal.Gui { /// public override bool ProcessKey (KeyEvent keyEvent) { - if (Table == null) { + if (Table == null || Table.Columns.Count <= 0) { PositionCursor (); return false; } @@ -865,7 +865,7 @@ namespace Terminal.Gui { SetFocus (); } - if (Table == null) { + if (Table == null || Table.Columns.Count <= 0) { return false; } @@ -925,7 +925,7 @@ namespace Terminal.Gui { /// public Point? ScreenToCell (int clientX, int clientY) { - if (Table == null) + if (Table == null || Table.Columns.Count <= 0) return null; var viewPort = CalculateViewport (Bounds); @@ -956,7 +956,7 @@ namespace Terminal.Gui { /// public Point? CellToScreen (int tableColumn, int tableRow) { - if (Table == null) + if (Table == null || Table.Columns.Count <= 0) return null; var viewPort = CalculateViewport (Bounds); @@ -1137,7 +1137,7 @@ namespace Terminal.Gui { /// private IEnumerable CalculateViewport (Rect bounds, int padding = 1) { - if (Table == null) + if (Table == null || Table.Columns.Count <= 0) yield break; int usedSpace = 0; diff --git a/UnitTests/TableViewTests.cs b/UnitTests/TableViewTests.cs index 67b9f6b16..5ccfdbbcd 100644 --- a/UnitTests/TableViewTests.cs +++ b/UnitTests/TableViewTests.cs @@ -74,6 +74,23 @@ namespace Terminal.Gui.Views { Assert.Equal (1, tableView.ColumnOffset); } + [Fact] + [AutoInitShutdown] + public void Redraw_EmptyTable () + { + var tableView = new TableView (); + tableView.ColorScheme = new ColorScheme(); + tableView.Bounds = new Rect (0, 0, 25, 10); + + // Set a table with 1 column + tableView.Table = BuildTable (1, 50); + tableView.Redraw(tableView.Bounds); + + tableView.Table.Columns.Remove(tableView.Table.Columns[0]); + tableView.Redraw(tableView.Bounds); + } + + [Fact] public void SelectedCellChanged_NotFiredForSameValue () {