Fixed TableView when redrawing a System.DataTable that has no columns (#1639)

This commit is contained in:
Thomas Nind
2022-03-17 09:06:17 +00:00
committed by GitHub
parent 0eb271ce39
commit f96c7001e4
2 changed files with 22 additions and 5 deletions

View File

@@ -621,7 +621,7 @@ namespace Terminal.Gui {
/// <inheritdoc/>
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 {
/// <returns></returns>
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 {
/// <returns></returns>
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 {
/// <returns></returns>
private IEnumerable<ColumnToRender> CalculateViewport (Rect bounds, int padding = 1)
{
if (Table == null)
if (Table == null || Table.Columns.Count <= 0)
yield break;
int usedSpace = 0;

View File

@@ -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 ()
{