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 @@ -60,5 +60,15 @@ namespace ICSharpCode.ILSpy
{
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 @@ -727,7 +727,17 @@ namespace ICSharpCode.ILSpy
#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.AncestorsAndSelf().Any(node => node.IsHidden)) {
@ -742,7 +752,11 @@ namespace ICSharpCode.ILSpy @@ -742,7 +752,11 @@ namespace ICSharpCode.ILSpy
}
// 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;
} else {
MessageBox.Show("Navigation failed because the target is hidden or a compiler-generated class.\n" +
@ -753,7 +767,17 @@ namespace ICSharpCode.ILSpy @@ -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 (inNewTabPage) {
@ -765,7 +789,11 @@ namespace ICSharpCode.ILSpy @@ -765,7 +789,11 @@ namespace ICSharpCode.ILSpy
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);
}
}
@ -998,7 +1026,7 @@ namespace ICSharpCode.ILSpy @@ -998,7 +1026,7 @@ namespace ICSharpCode.ILSpy
refreshInProgress = true;
var path = GetPathForNode(AssemblyTreeView.SelectedItem as SharpTreeNode);
ShowAssemblyList(AssemblyListManager.LoadList(ILSpySettings.Load(), assemblyList.ListName));
SelectNode(FindNodeByPath(path, true));
SelectNode(FindNodeByPath(path, true), false, false);
} finally {
refreshInProgress = false;
}

3
ILSpy/TreeNodes/EventTreeNode.cs

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

3
ILSpy/TreeNodes/FieldTreeNode.cs

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

3
ILSpy/TreeNodes/MethodTreeNode.cs

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

3
ILSpy/TreeNodes/PropertyTreeNode.cs

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

3
ILSpy/TreeNodes/TypeTreeNode.cs

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

Loading…
Cancel
Save