Skip to content

Commit d31ed51

Browse files
Fix a few bugs in AnalyzerEntityTreeNode
1 parent 3c70224 commit d31ed51

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

ILSpy/Analyzers/AnalyzerEntityTreeNode.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,14 @@ public override void ActivateItem(IPlatformRoutedEventArgs e)
4646
MessageBus.Send(this, new NavigateToReferenceEventArgs(new EntityReference(this.Member.ParentModule?.MetadataFile, this.Member.MetadataToken)));
4747
}
4848

49-
public override object ToolTip => Member.ParentModule?.MetadataFile?.FileName;
49+
public override object ToolTip => Member?.ParentModule?.MetadataFile?.FileName;
5050

5151
public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> removedAssemblies, ICollection<LoadedAssembly> addedAssemblies)
5252
{
53+
if (Member == null)
54+
{
55+
return true;
56+
}
5357
foreach (LoadedAssembly asm in removedAssemblies)
5458
{
5559
if (this.Member.ParentModule.MetadataFile == asm.GetMetadataFileOrNull())

ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Collections.Generic;
2021
using System.Windows;
2122

2223
using ICSharpCode.Decompiler.TypeSystem;
24+
using ICSharpCode.ILSpyX;
25+
using ICSharpCode.ILSpyX.TreeView;
2326
using ICSharpCode.ILSpyX.TreeView.PlatformAbstractions;
2427

2528
namespace ICSharpCode.ILSpy.Analyzers.TreeNodes
@@ -38,6 +41,8 @@ public AnalyzedModuleTreeNode(IModule analyzedModule)
3841

3942
public override object Text => analyzedModule.AssemblyName;
4043

44+
public override object ToolTip => analyzedModule.MetadataFile?.FileName;
45+
4146
protected override void LoadChildren()
4247
{
4348
foreach (var lazy in Analyzers)
@@ -62,5 +67,24 @@ public override void ActivateItem(IPlatformRoutedEventArgs e)
6267
}
6368

6469
public override IEntity Member => null;
70+
71+
public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> removedAssemblies, ICollection<LoadedAssembly> addedAssemblies)
72+
{
73+
if (analyzedModule == null)
74+
{
75+
return true;
76+
}
77+
foreach (LoadedAssembly asm in removedAssemblies)
78+
{
79+
if (this.analyzedModule.MetadataFile == asm.GetMetadataFileOrNull())
80+
return false; // remove this node
81+
}
82+
this.Children.RemoveAll(
83+
delegate (SharpTreeNode n) {
84+
AnalyzerTreeNode an = n as AnalyzerTreeNode;
85+
return an == null || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
86+
});
87+
return true;
88+
}
6589
}
6690
}

0 commit comments

Comments
 (0)