Browse Source

Fix a few bugs in AnalyzerEntityTreeNode

pull/3410/head
Siegfried Pammer 3 months ago
parent
commit
d31ed51569
  1. 6
      ILSpy/Analyzers/AnalyzerEntityTreeNode.cs
  2. 24
      ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs

6
ILSpy/Analyzers/AnalyzerEntityTreeNode.cs

@ -46,10 +46,14 @@ namespace ICSharpCode.ILSpy.Analyzers @@ -46,10 +46,14 @@ namespace ICSharpCode.ILSpy.Analyzers
MessageBus.Send(this, new NavigateToReferenceEventArgs(new EntityReference(this.Member.ParentModule?.MetadataFile, this.Member.MetadataToken)));
}
public override object ToolTip => Member.ParentModule?.MetadataFile?.FileName;
public override object ToolTip => Member?.ParentModule?.MetadataFile?.FileName;
public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> removedAssemblies, ICollection<LoadedAssembly> addedAssemblies)
{
if (Member == null)
{
return true;
}
foreach (LoadedAssembly asm in removedAssemblies)
{
if (this.Member.ParentModule.MetadataFile == asm.GetMetadataFileOrNull())

24
ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs

@ -17,9 +17,12 @@ @@ -17,9 +17,12 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Windows;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.ILSpyX;
using ICSharpCode.ILSpyX.TreeView;
using ICSharpCode.ILSpyX.TreeView.PlatformAbstractions;
namespace ICSharpCode.ILSpy.Analyzers.TreeNodes
@ -38,6 +41,8 @@ namespace ICSharpCode.ILSpy.Analyzers.TreeNodes @@ -38,6 +41,8 @@ namespace ICSharpCode.ILSpy.Analyzers.TreeNodes
public override object Text => analyzedModule.AssemblyName;
public override object ToolTip => analyzedModule.MetadataFile?.FileName;
protected override void LoadChildren()
{
foreach (var lazy in Analyzers)
@ -62,5 +67,24 @@ namespace ICSharpCode.ILSpy.Analyzers.TreeNodes @@ -62,5 +67,24 @@ namespace ICSharpCode.ILSpy.Analyzers.TreeNodes
}
public override IEntity Member => null;
public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> removedAssemblies, ICollection<LoadedAssembly> addedAssemblies)
{
if (analyzedModule == null)
{
return true;
}
foreach (LoadedAssembly asm in removedAssemblies)
{
if (this.analyzedModule.MetadataFile == asm.GetMetadataFileOrNull())
return false; // remove this node
}
this.Children.RemoveAll(
delegate (SharpTreeNode n) {
AnalyzerTreeNode an = n as AnalyzerTreeNode;
return an == null || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
});
return true;
}
}
}

Loading…
Cancel
Save