diff --git a/Terminal.Gui/Views/TileView.cs b/Terminal.Gui/Views/TileView.cs index 5f2e79a33..b666db2f5 100644 --- a/Terminal.Gui/Views/TileView.cs +++ b/Terminal.Gui/Views/TileView.cs @@ -704,7 +704,9 @@ namespace Terminal.Gui { if (availableLeft < requiredLeft) { // There is not enough space for panel on left - var insteadTake = requiredLeft + (HasBorder() ? 1 :0); + var insteadTake = requiredLeft == int.MaxValue ? + int.MaxValue : + requiredLeft + (HasBorder() ? 1 :0); // Don't take more than the available space in view insteadTake = Math.Max(0,Math.Min (fullSpace, insteadTake)); diff --git a/UnitTests/TileViewTests.cs b/UnitTests/TileViewTests.cs index 27a1884df..649480efb 100644 --- a/UnitTests/TileViewTests.cs +++ b/UnitTests/TileViewTests.cs @@ -908,33 +908,26 @@ namespace UnitTests { [Fact,AutoInitShutdown] public void Test5Panel_MinSizes_VerticalSplitters() { - - var tv = new TileView (5){ Width = 25, Height = 4, ColorScheme = new ColorScheme (), IntegratedBorder = BorderStyle.Single }; + var tv = Get5x1TilesView(); - tv.Tiles.ElementAt (0).View.Add (new Label(new string('1',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); - tv.Tiles.ElementAt (1).View.Add (new Label(new string('2',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); - tv.Tiles.ElementAt (2).View.Add (new Label(new string('3',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); - tv.Tiles.ElementAt (3).View.Add (new Label(new string('4',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); - tv.Tiles.ElementAt (4).View.Add (new Label(new string('5',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); - - Application.Top.Add (tv); - tv.BeginInit (); - tv.EndInit (); - tv.LayoutSubviews (); + tv.Tiles.ElementAt(0).MinSize = int.MaxValue; + tv.SetNeedsDisplay(); + tv.LayoutSubviews(); + Assert.True(tv.IsInitialized); tv.Redraw (tv.Bounds); var looksLike = @" -┌────┬────┬────┬────┬───┐ -│1111│2222│3333│4444│555│ -│ │ │ │ │ │ -└────┴────┴────┴────┴───┘ +┌───────────────────────┐ +│11111111111111111111111│ +│ │ +└───────────────────────┘ "; TestHelpers.AssertDriverContentsAre (looksLike, output); - // TODO : Apply min sizes and create test assertions + } [Fact, AutoInitShutdown] @@ -1418,6 +1411,37 @@ namespace UnitTests { Assert.True (line.HasFocus); } + + private TileView Get5x1TilesView () + { + var tv = new TileView (5){ Width = 25, Height = 4, ColorScheme = new ColorScheme (), IntegratedBorder = BorderStyle.Single }; + + tv.Tiles.ElementAt (0).View.Add (new Label(new string('1',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); + tv.Tiles.ElementAt (1).View.Add (new Label(new string('2',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); + tv.Tiles.ElementAt (2).View.Add (new Label(new string('3',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); + tv.Tiles.ElementAt (3).View.Add (new Label(new string('4',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); + tv.Tiles.ElementAt (4).View.Add (new Label(new string('5',100)){AutoSize=false,Width=Dim.Fill(),Height = 1}); + + Application.Top.Add (tv); + tv.BeginInit (); + tv.EndInit (); + tv.LayoutSubviews (); + + + tv.Redraw (tv.Bounds); + + var looksLike = +@" +┌────┬────┬────┬────┬───┐ +│1111│2222│3333│4444│555│ +│ │ │ │ │ │ +└────┴────┴────┴────┴───┘ +"; + TestHelpers.AssertDriverContentsAre (looksLike, output); + + return tv; + } + private TileView Get11By3TileView (out LineView line, bool withBorder = false) { var split = Get11By3TileView (withBorder);