Browse Source

Prohibit dragging assemblies nested in bundles/nuget packages

pull/2218/head
Daniel Grunwald 5 years ago
parent
commit
55adf7b04a
  1. 17
      ILSpy/TreeNodes/AssemblyTreeNode.cs
  2. 2
      ILSpy/TreeNodes/PackageFolderTreeNode.cs

17
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -47,17 +47,16 @@ namespace ICSharpCode.ILSpy.TreeNodes
readonly Dictionary<string, NamespaceTreeNode> namespaces = new Dictionary<string, NamespaceTreeNode>(); readonly Dictionary<string, NamespaceTreeNode> namespaces = new Dictionary<string, NamespaceTreeNode>();
readonly Dictionary<TypeDefinitionHandle, TypeTreeNode> typeDict = new Dictionary<TypeDefinitionHandle, TypeTreeNode>(); readonly Dictionary<TypeDefinitionHandle, TypeTreeNode> typeDict = new Dictionary<TypeDefinitionHandle, TypeTreeNode>();
ICompilation typeSystem; ICompilation typeSystem;
string textOverride;
public AssemblyTreeNode(LoadedAssembly assembly) : this(assembly, null) public AssemblyTreeNode(LoadedAssembly assembly) : this(assembly, null)
{ {
} }
private AssemblyTreeNode(LoadedAssembly assembly, string textOverride) internal AssemblyTreeNode(LoadedAssembly assembly, PackageEntry packageEntry)
{ {
this.LoadedAssembly = assembly ?? throw new ArgumentNullException(nameof(assembly)); this.LoadedAssembly = assembly ?? throw new ArgumentNullException(nameof(assembly));
this.LazyLoading = true; this.LazyLoading = true;
this.textOverride = textOverride; this.PackageEntry = packageEntry;
Init(); Init();
} }
@ -67,13 +66,19 @@ namespace ICSharpCode.ILSpy.TreeNodes
public LoadedAssembly LoadedAssembly { get; } public LoadedAssembly LoadedAssembly { get; }
/// <summary>
/// If this assembly was loaded from a bundle; this property returns the bundle entry that the
/// assembly was loaded from.
/// </summary>
public PackageEntry PackageEntry { get; }
public override bool IsAutoLoaded { public override bool IsAutoLoaded {
get { get {
return LoadedAssembly.IsAutoLoaded; return LoadedAssembly.IsAutoLoaded;
} }
} }
public override object Text => textOverride ?? LoadedAssembly.Text; public override object Text => LoadedAssembly.Text;
public override object Icon { public override object Icon {
get { get {
@ -255,7 +260,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool CanDrag(SharpTreeNode[] nodes) public override bool CanDrag(SharpTreeNode[] nodes)
{ {
// prohibit dragging assemblies nested in nuget packages // prohibit dragging assemblies nested in nuget packages
return nodes.All(n => n is AssemblyTreeNode { textOverride: null }); return nodes.All(n => n is AssemblyTreeNode { PackageEntry: null });
} }
public override void StartDrag(DependencyObject dragSource, SharpTreeNode[] nodes) public override void StartDrag(DependencyObject dragSource, SharpTreeNode[] nodes)
@ -266,7 +271,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool CanDelete() public override bool CanDelete()
{ {
// prohibit deleting assemblies nested in nuget packages // prohibit deleting assemblies nested in nuget packages
return textOverride == null; return PackageEntry == null;
} }
public override void Delete() public override void Delete()

2
ILSpy/TreeNodes/PackageFolderTreeNode.cs

@ -71,7 +71,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
var asm = root.ResolveFileName(entry.Name); var asm = root.ResolveFileName(entry.Name);
if (asm != null) if (asm != null)
{ {
yield return new AssemblyTreeNode(asm); yield return new AssemblyTreeNode(asm, entry);
} }
else else
{ {

Loading…
Cancel
Save