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 @@ -47,17 +47,16 @@ namespace ICSharpCode.ILSpy.TreeNodes
readonly Dictionary<string, NamespaceTreeNode> namespaces = new Dictionary<string, NamespaceTreeNode>();
readonly Dictionary<TypeDefinitionHandle, TypeTreeNode> typeDict = new Dictionary<TypeDefinitionHandle, TypeTreeNode>();
ICompilation typeSystem;
string textOverride;
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.LazyLoading = true;
this.textOverride = textOverride;
this.PackageEntry = packageEntry;
Init();
}
@ -67,13 +66,19 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -67,13 +66,19 @@ namespace ICSharpCode.ILSpy.TreeNodes
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 {
get {
return LoadedAssembly.IsAutoLoaded;
}
}
public override object Text => textOverride ?? LoadedAssembly.Text;
public override object Text => LoadedAssembly.Text;
public override object Icon {
get {
@ -255,7 +260,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -255,7 +260,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool CanDrag(SharpTreeNode[] nodes)
{
// 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)
@ -266,7 +271,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -266,7 +271,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool CanDelete()
{
// prohibit deleting assemblies nested in nuget packages
return textOverride == null;
return PackageEntry == null;
}
public override void Delete()

2
ILSpy/TreeNodes/PackageFolderTreeNode.cs

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

Loading…
Cancel
Save