Skip to content

Commit 56139ef

Browse files
BobSilentjonsequitur
authored andcommitted
Preserve column width definition after sorting for size calculation
1 parent cf37f40 commit 56139ef

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/System.CommandLine.Rendering.Tests/Views/GridViewTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,33 @@ public void Empty_size_to_content_grid_do_not_take_up_space()
5757
measuredSize.Height.Should().Be(0);
5858
}
5959

60+
[Theory]
61+
[InlineData(OutputMode.Ansi)]
62+
[InlineData(OutputMode.NonAnsi)]
63+
public void Column_width_definition_is_preserved_even_defintion_is_mixed_for_subsequent_columns(OutputMode outputMode)
64+
{
65+
var grid = new GridView();
66+
grid.SetColumns(ColumnDefinition.Fixed(10), ColumnDefinition.Star(1), ColumnDefinition.Fixed(10), ColumnDefinition.SizeToContent());
67+
grid.SetChild(new ContentView("The quick"), 0, 0);
68+
grid.SetChild(new ContentView("brown fox"), 1, 0);
69+
grid.SetChild(new ContentView("jumped"), 2, 0);
70+
grid.SetChild(new ContentView("over the sleepy"), 3, 0);
71+
72+
var terminal = new TestTerminal();
73+
var renderer = new ConsoleRenderer(terminal, outputMode);
74+
grid.Render(renderer, new Region(0, 0, 115, 1));
75+
76+
terminal.Events.Should().BeEquivalentSequenceTo(
77+
new TestTerminal.CursorPositionChanged(new Point(0, 0)),
78+
new TestTerminal.ContentWritten("The quick "),
79+
new TestTerminal.CursorPositionChanged(new Point(10, 0)),
80+
new TestTerminal.ContentWritten("brown fox" + new string(' ', 71)),
81+
new TestTerminal.CursorPositionChanged(new Point(90, 0)),
82+
new TestTerminal.ContentWritten("jumped "),
83+
new TestTerminal.CursorPositionChanged(new Point(100, 0)),
84+
new TestTerminal.ContentWritten("over the sleepy"));
85+
}
86+
6087
[Theory]
6188
[InlineData(OutputMode.Ansi)]
6289
[InlineData(OutputMode.NonAnsi)]

src/System.CommandLine.Rendering/Views/GridView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public override void Render(ConsoleRenderer renderer, Region region)
126126
int availableWidth = maxSize.Width;
127127
int? totalWidthForStarSizing = null;
128128

129-
foreach (var (column, columnIndex) in _columns.OrderBy(x => GetProcessOrder(x.SizeMode)).Select((x, i) => (x, i)))
129+
foreach (var (column, columnIndex) in _columns.Select((definition, columnIndex) => (definition, columnIndex)).OrderBy(t => GetProcessOrder(t.definition.SizeMode)))
130130
{
131131
int availableHeight = maxSize.Height;
132132

0 commit comments

Comments
 (0)