diff --git a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs index 2374c49d3..73001c41a 100644 --- a/mRemoteV1/UI/Window/ConnectionTreeWindow.cs +++ b/mRemoteV1/UI/Window/ConnectionTreeWindow.cs @@ -222,21 +222,34 @@ namespace mRemoteNG.UI.Window private void PopulateTreeView() { + UnregisterModelUpdateHandlers(); olvConnections.SetObjects(ConnectionTreeModel.RootNodes); - SetModelUpdateHandlers(); + RegisterModelUpdateHandlers(); _nodeSearcher = new NodeSearcher(ConnectionTreeModel); ExpandPreviouslyOpenedFolders(); ExpandRootConnectionNode(); OpenConnectionsFromLastSession(); } - private void SetModelUpdateHandlers() + private void RegisterModelUpdateHandlers() { - _puttySessionsManager.PuttySessionsCollectionChanged += (sender, args) => RefreshTreeObjects(GetRootPuttyNodes().ToList()); + _puttySessionsManager.PuttySessionsCollectionChanged += OnPuttySessionsCollectionChanged; ConnectionTreeModel.CollectionChanged += HandleCollectionChanged; ConnectionTreeModel.PropertyChanged += HandleCollectionPropertyChanged; } + private void UnregisterModelUpdateHandlers() + { + _puttySessionsManager.PuttySessionsCollectionChanged -= OnPuttySessionsCollectionChanged; + ConnectionTreeModel.CollectionChanged -= HandleCollectionChanged; + ConnectionTreeModel.PropertyChanged -= HandleCollectionPropertyChanged; + } + + private void OnPuttySessionsCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) + { + RefreshTreeObjects(GetRootPuttyNodes().ToList()); + } + private void HandleCollectionPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) { //TODO for some reason property changed events are getting triggered twice for each changed property. should be just once. cant find source of duplication