mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Add InsertTile method
This commit is contained in:
@@ -116,6 +116,34 @@ namespace Terminal.Gui {
|
||||
LayoutSubviews ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new <see cref="Tile"/> to the collection at <paramref name="idx"/>.
|
||||
/// This will also add another splitter line
|
||||
/// </summary>
|
||||
/// <param name="idx"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
internal void InsertTile (int idx)
|
||||
{
|
||||
var oldTiles = Tiles.ToArray ();
|
||||
RebuildForTileCount (oldTiles.Length + 1);
|
||||
|
||||
for(int i=0;i<tiles.Count;i++) {
|
||||
|
||||
if(i != idx) {
|
||||
var oldTile = oldTiles [i > idx ? i - 1 : i];
|
||||
|
||||
// remove the new empty View
|
||||
Remove (tiles [i].View);
|
||||
|
||||
// restore old Tile and View
|
||||
tiles [i] = oldTile;
|
||||
Add (tiles [i].View);
|
||||
}
|
||||
}
|
||||
SetNeedsDisplay ();
|
||||
LayoutSubviews ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Orientation of the dividing line (Horizontal or Vertical).
|
||||
/// </summary>
|
||||
|
||||
@@ -379,8 +379,27 @@ namespace UnitTests {
|
||||
└──┴──────┘";
|
||||
|
||||
TestHelpers.AssertDriverContentsAre (looksLike, output);
|
||||
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void TestSplitView_InsertPanelAtStart ()
|
||||
{
|
||||
var splitContainer = Get11By3SplitView (out var line, true);
|
||||
SetInputFocusLine (splitContainer);
|
||||
|
||||
splitContainer.InsertTile (0);
|
||||
|
||||
splitContainer.Redraw (splitContainer.Bounds);
|
||||
|
||||
// so should ignore the 2 distance and stick to 6
|
||||
string looksLike =
|
||||
@"
|
||||
┌──┬───┬──┐
|
||||
│ │111│22│
|
||||
└──┴───┴──┘";
|
||||
TestHelpers.AssertDriverContentsAre (looksLike, output);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void TestSplitView_Horizontal_Focused ()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user