Browse Source

Fix #228 ILSpy /NavigateTo: does not allow you to navigate to a namespace

pull/254/merge
Daniel Grunwald 14 years ago
parent
commit
6746938728
  1. 31
      ILSpy/MainWindow.xaml.cs
  2. 18
      ILSpy/TreeNodes/AssemblyTreeNode.cs

31
ILSpy/MainWindow.xaml.cs

@ -242,14 +242,29 @@ namespace ICSharpCode.ILSpy @@ -242,14 +242,29 @@ namespace ICSharpCode.ILSpy
{
if (args.NavigateTo != null) {
bool found = false;
foreach (LoadedAssembly asm in commandLineLoadedAssemblies) {
AssemblyDefinition def = asm.AssemblyDefinition;
if (def != null) {
MemberReference mr = XmlDocKeyProvider.FindMemberByKey(def.MainModule, args.NavigateTo);
if (mr != null) {
found = true;
JumpToReference(mr);
break;
if (args.NavigateTo.StartsWith("N:", StringComparison.Ordinal)) {
string namespaceName = args.NavigateTo.Substring(2);
foreach (LoadedAssembly asm in commandLineLoadedAssemblies) {
AssemblyTreeNode asmNode = assemblyListTreeNode.FindAssemblyNode(asm);
if (asmNode != null) {
NamespaceTreeNode nsNode = asmNode.FindNamespaceNode(namespaceName);
if (nsNode != null) {
found = true;
SelectNode(nsNode);
break;
}
}
}
} else {
foreach (LoadedAssembly asm in commandLineLoadedAssemblies) {
AssemblyDefinition def = asm.AssemblyDefinition;
if (def != null) {
MemberReference mr = XmlDocKeyProvider.FindMemberByKey(def.MainModule, args.NavigateTo);
if (mr != null) {
found = true;
JumpToReference(mr);
break;
}
}
}
}

18
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -139,6 +139,9 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -139,6 +139,9 @@ namespace ICSharpCode.ILSpy.TreeNodes
get { return true; }
}
/// <summary>
/// Finds the node for a top-level type.
/// </summary>
public TypeTreeNode FindTypeNode(TypeDefinition def)
{
if (def == null)
@ -151,6 +154,21 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -151,6 +154,21 @@ namespace ICSharpCode.ILSpy.TreeNodes
return null;
}
/// <summary>
/// Finds the node for a namespace.
/// </summary>
public NamespaceTreeNode FindNamespaceNode(string namespaceName)
{
if (string.IsNullOrEmpty(namespaceName))
return null;
EnsureLazyChildren();
NamespaceTreeNode node;
if (namespaces.TryGetValue(namespaceName, out node))
return node;
else
return null;
}
public override bool CanDrag(SharpTreeNode[] nodes)
{
return nodes.All(n => n is AssemblyTreeNode);

Loading…
Cancel
Save