From b646e7ef70543a2a63ca8bd7dca1e59f88f766cd Mon Sep 17 00:00:00 2001 From: David Sparer Date: Thu, 22 Sep 2016 10:36:37 -0600 Subject: [PATCH] Minor optimization tree refresh when dragging nodes between containers. There is still a small disruption in the UI (~200ms) when moving nodes between containers. --- mRemoteV1/UI/Window/ConnectionTreeWindow.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs index 525a4d179..8430a10a6 100644 --- a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs +++ b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs @@ -406,12 +406,16 @@ namespace mRemoteNG.UI.Window private void HandleCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) { - var senderAsConnectionInfo = sender as ConnectionInfo; + var senderAsContainerInfo = sender as ContainerInfo; switch (args?.Action) { case NotifyCollectionChangedAction.Add: - RefreshTreeObject(senderAsConnectionInfo); - break; + var otherChild = senderAsContainerInfo?.Children.First(child => !args.NewItems.Contains(child)); + if (otherChild != null) + RefreshTreeObject(otherChild); + else + RefreshTreeObject(senderAsContainerInfo); + break; case NotifyCollectionChangedAction.Remove: RefreshTreeObjects(args.OldItems); break; @@ -419,7 +423,7 @@ namespace mRemoteNG.UI.Window RefreshTreeObjects(args.OldItems); break; case NotifyCollectionChangedAction.Reset: - RefreshTreeObject(senderAsConnectionInfo); + RefreshTreeObject(senderAsContainerInfo); break; case NotifyCollectionChangedAction.Replace: break;