mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
This commit is contained in:
@@ -277,6 +277,37 @@ public class ScrollView : View {
|
||||
SetNeedsLayout ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes the view from the scrollview.
|
||||
/// </summary>
|
||||
/// <param name="view">The view to remove from the scrollview.</param>
|
||||
public override void Remove (View view)
|
||||
{
|
||||
if (view == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
SetNeedsDisplay ();
|
||||
var container = view?.SuperView;
|
||||
if (container == this) {
|
||||
base.Remove (view);
|
||||
} else {
|
||||
container?.Remove (view);
|
||||
}
|
||||
|
||||
if (_contentView.InternalSubviews.Count < 1) {
|
||||
this.CanFocus = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes all widgets from this container.
|
||||
/// </summary>
|
||||
public override void RemoveAll ()
|
||||
{
|
||||
_contentView.RemoveAll ();
|
||||
}
|
||||
|
||||
void View_MouseLeave (object sender, MouseEventEventArgs e)
|
||||
{
|
||||
if (Application.MouseGrabView != null && Application.MouseGrabView != _vertical && Application.MouseGrabView != _horizontal) {
|
||||
@@ -318,16 +349,6 @@ public class ScrollView : View {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes all widgets from this container.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// </remarks>
|
||||
public override void RemoveAll ()
|
||||
{
|
||||
_contentView.RemoveAll ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the visibility for the vertical scroll indicator.
|
||||
/// </summary>
|
||||
|
||||
@@ -927,5 +927,28 @@ namespace Terminal.Gui.ViewsTests {
|
||||
pos = TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
|
||||
Assert.Equal (new Rect (1, 1, 21, 14), pos);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void Remove_Added_View_Is_Allowed ()
|
||||
{
|
||||
var sv = new ScrollView () {
|
||||
Width = 20,
|
||||
Height = 20,
|
||||
ContentSize = new Size (100, 100)
|
||||
};
|
||||
sv.Add (new View () { Width = Dim.Fill (), Height = Dim.Fill (50), Id = "View1" },
|
||||
new View () { Y = 51, Width = Dim.Fill (), Height = Dim.Fill (), Id = "View2" });
|
||||
|
||||
Application.Top.Add (sv);
|
||||
Application.Begin (Application.Top);
|
||||
|
||||
Assert.Equal (4, sv.Subviews.Count);
|
||||
Assert.Equal (2, sv.Subviews [0].Subviews.Count);
|
||||
|
||||
sv.Remove (sv.Subviews [0].Subviews [1]);
|
||||
Assert.Equal (4, sv.Subviews.Count);
|
||||
Assert.Single (sv.Subviews [0].Subviews);
|
||||
Assert.Equal ("View1", sv.Subviews [0].Subviews [0].Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user