diff --git a/mRemoteNGTests/Tree/ConnectionTreeTests.cs b/mRemoteNGTests/Tree/ConnectionTreeTests.cs index e27710091..ecf8818a5 100644 --- a/mRemoteNGTests/Tree/ConnectionTreeTests.cs +++ b/mRemoteNGTests/Tree/ConnectionTreeTests.cs @@ -1,4 +1,8 @@ -using mRemoteNG.UI.Controls; +using System.Threading; +using mRemoteNG.Container; +using mRemoteNG.Tree; +using mRemoteNG.Tree.Root; +using mRemoteNG.UI.Controls; using NUnit.Framework; @@ -7,10 +11,12 @@ namespace mRemoteNGTests.Tree public class ConnectionTreeTests { private ConnectionTree _connectionTree; + private ConnectionTreeModel _connectionTreeModel; [SetUp] public void Setup() { + _connectionTreeModel = CreateConnectionTreeModel(); _connectionTree = new ConnectionTree(); } @@ -21,9 +27,22 @@ namespace mRemoteNGTests.Tree } - [Test] - public void test() + [Test, Apartment(ApartmentState.STA)] + public void CanDeleteLastFolderInTheTree() { + var lastFolder = new ContainerInfo(); + _connectionTreeModel.RootNodes[0].AddChild(lastFolder); + _connectionTree.ConnectionTreeModel = _connectionTreeModel; + _connectionTree.SelectObject(lastFolder); + _connectionTree.DeleteSelectedNode(); + Assert.That(_connectionTree.GetRootConnectionNode().HasChildren, Is.False); + } + + private ConnectionTreeModel CreateConnectionTreeModel() + { + var connectionTreeModel = new ConnectionTreeModel(); + connectionTreeModel.AddRootNode(new RootNodeInfo(RootNodeType.Connection)); + return connectionTreeModel; } } } \ No newline at end of file diff --git a/mRemoteV1/UI/Controls/ConnectionTree.cs b/mRemoteV1/UI/Controls/ConnectionTree.cs index 29c8e139d..f4daee50d 100644 --- a/mRemoteV1/UI/Controls/ConnectionTree.cs +++ b/mRemoteV1/UI/Controls/ConnectionTree.cs @@ -26,7 +26,7 @@ namespace mRemoteNG.UI.Controls private ImageList _imgListTree; - public ConnectionInfo SelectedNode => (ConnectionInfo)SelectedObject; + public ConnectionInfo SelectedNode => (ConnectionInfo) SelectedObject; public NodeSearcher NodeSearcher { get; private set; } @@ -239,7 +239,10 @@ namespace mRemoteNG.UI.Controls RefreshTreeObject(otherChild ?? senderAsContainerInfo); break; case NotifyCollectionChangedAction.Remove: - RefreshTreeObjects(args.OldItems); + if (senderAsContainerInfo?.Children.Count > 0) + RefreshTreeObjects(args.OldItems); + else + RefreshTreeObject(senderAsContainerInfo); break; case NotifyCollectionChangedAction.Move: RefreshTreeObjects(args.OldItems);