Browse Source

Fix #1948: Toolbar loses focus when changing language/version

pull/1951/head
Siegfried Pammer 5 years ago
parent
commit
0c55dff1fc
  1. 10
      ILSpy/Languages/Languages.cs
  2. 38
      ILSpy/MainWindow.xaml.cs
  3. 3
      ILSpy/TreeNodes/EventTreeNode.cs
  4. 3
      ILSpy/TreeNodes/FieldTreeNode.cs
  5. 3
      ILSpy/TreeNodes/MethodTreeNode.cs
  6. 3
      ILSpy/TreeNodes/PropertyTreeNode.cs
  7. 3
      ILSpy/TreeNodes/TypeTreeNode.cs

10
ILSpy/Languages/Languages.cs

@ -60,5 +60,15 @@ namespace ICSharpCode.ILSpy
{ {
return AllLanguages.FirstOrDefault(l => l.Name == name) ?? AllLanguages.First(); return AllLanguages.FirstOrDefault(l => l.Name == name) ?? AllLanguages.First();
} }
static ILLanguage ilLanguage;
public static ILLanguage ILLanguage {
get {
if (ilLanguage == null) {
ilLanguage = (ILLanguage)GetLanguage("IL");
}
return ilLanguage;
}
}
} }
} }

38
ILSpy/MainWindow.xaml.cs

@ -727,7 +727,17 @@ namespace ICSharpCode.ILSpy
#region Node Selection #region Node Selection
public void SelectNode(SharpTreeNode obj, bool inNewTabPage = false) public void SelectNode(SharpTreeNode obj)
{
SelectNode(obj, false);
}
public void SelectNode(SharpTreeNode obj, bool inNewTabPage)
{
SelectNode(obj, inNewTabPage, true);
}
public void SelectNode(SharpTreeNode obj, bool inNewTabPage, bool setFocus)
{ {
if (obj != null) { if (obj != null) {
if (!obj.AncestorsAndSelf().Any(node => node.IsHidden)) { if (!obj.AncestorsAndSelf().Any(node => node.IsHidden)) {
@ -742,7 +752,11 @@ namespace ICSharpCode.ILSpy
} }
// Set both the selection and focus to ensure that keyboard navigation works as expected. // Set both the selection and focus to ensure that keyboard navigation works as expected.
AssemblyTreeView.FocusNode(obj); if (setFocus) {
AssemblyTreeView.FocusNode(obj);
} else {
AssemblyTreeView.ScrollIntoView(obj);
}
AssemblyTreeView.SelectedItem = obj; AssemblyTreeView.SelectedItem = obj;
} else { } else {
MessageBox.Show("Navigation failed because the target is hidden or a compiler-generated class.\n" + MessageBox.Show("Navigation failed because the target is hidden or a compiler-generated class.\n" +
@ -753,7 +767,17 @@ namespace ICSharpCode.ILSpy
} }
} }
public void SelectNodes(IEnumerable<SharpTreeNode> nodes, bool inNewTabPage = false) public void SelectNodes(IEnumerable<SharpTreeNode> nodes)
{
SelectNodes(nodes, false);
}
public void SelectNodes(IEnumerable<SharpTreeNode> nodes, bool inNewTabPage)
{
SelectNodes(nodes, inNewTabPage, true);
}
public void SelectNodes(IEnumerable<SharpTreeNode> nodes, bool inNewTabPage, bool setFocus)
{ {
if (nodes.Any() && nodes.All(n => !n.AncestorsAndSelf().Any(a => a.IsHidden))) { if (nodes.Any() && nodes.All(n => !n.AncestorsAndSelf().Any(a => a.IsHidden))) {
if (inNewTabPage) { if (inNewTabPage) {
@ -765,7 +789,11 @@ namespace ICSharpCode.ILSpy
DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last(); DockWorkspace.Instance.ActiveTabPage = DockWorkspace.Instance.TabPages.Last();
} }
AssemblyTreeView.FocusNode(nodes.First()); if (setFocus) {
AssemblyTreeView.FocusNode(nodes.First());
} else {
AssemblyTreeView.ScrollIntoView(nodes.First());
}
AssemblyTreeView.SetSelectedNodes(nodes); AssemblyTreeView.SetSelectedNodes(nodes);
} }
} }
@ -998,7 +1026,7 @@ namespace ICSharpCode.ILSpy
refreshInProgress = true; refreshInProgress = true;
var path = GetPathForNode(AssemblyTreeView.SelectedItem as SharpTreeNode); var path = GetPathForNode(AssemblyTreeView.SelectedItem as SharpTreeNode);
ShowAssemblyList(AssemblyListManager.LoadList(ILSpySettings.Load(), assemblyList.ListName)); ShowAssemblyList(AssemblyListManager.LoadList(ILSpySettings.Load(), assemblyList.ListName));
SelectNode(FindNodeByPath(path, true)); SelectNode(FindNodeByPath(path, true), false, false);
} finally { } finally {
refreshInProgress = false; refreshInProgress = false;
} }

3
ILSpy/TreeNodes/EventTreeNode.cs

@ -89,8 +89,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override string ToString() public override string ToString()
{ {
int token = System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(EventDefinition.MetadataToken); return EventDefinition.Name;
return "@" + token.ToString("X8");
} }
} }
} }

3
ILSpy/TreeNodes/FieldTreeNode.cs

@ -90,8 +90,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override string ToString() public override string ToString()
{ {
int token = System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(FieldDefinition.MetadataToken); return FieldDefinition.Name;
return "@" + token.ToString("X8");
} }
} }
} }

3
ILSpy/TreeNodes/MethodTreeNode.cs

@ -115,8 +115,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override string ToString() public override string ToString()
{ {
int token = System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(MethodDefinition.MetadataToken); return Languages.ILLanguage.MethodToString(MethodDefinition, false, false, false);
return "@" + token.ToString("X8");
} }
} }
} }

3
ILSpy/TreeNodes/PropertyTreeNode.cs

@ -96,8 +96,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override string ToString() public override string ToString()
{ {
int token = System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(PropertyDefinition.MetadataToken); return Languages.ILLanguage.PropertyToString(PropertyDefinition, false, false, false);
return "@" + token.ToString("X8");
} }
} }
} }

3
ILSpy/TreeNodes/TypeTreeNode.cs

@ -157,8 +157,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override string ToString() public override string ToString()
{ {
int token = System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(TypeDefinition.MetadataToken); return TypeDefinition.ReflectionName;
return "@" + token.ToString("X8");
} }
} }
} }

Loading…
Cancel
Save