Browse Source

Fix possible ObservableCollection re-entrance crash when trying to navigate to a collapsed item.

pull/3294/head
tom-englert 2 years ago
parent
commit
9b95f92729
  1. 13
      ILSpy/AssemblyTree/AssemblyTreeModel.cs

13
ILSpy/AssemblyTree/AssemblyTreeModel.cs

@ -530,14 +530,22 @@ namespace ICSharpCode.ILSpy.AssemblyTree
if (this.isNavigatingHistory) if (this.isNavigatingHistory)
{ {
SelectedItems.Clear(); SelectedItems.Clear();
SelectedItems.AddRange(nodesList); foreach (var node in nodesList)
{
activeView.ScrollIntoView(node);
SelectedItems.Add(node);
}
} }
else else
{ {
// defer selection change, so it does not interfere with the focus of the tab page. // defer selection change, so it does not interfere with the focus of the tab page.
Dispatcher.BeginInvoke(() => { Dispatcher.BeginInvoke(() => {
SelectedItems.Clear(); SelectedItems.Clear();
SelectedItems.AddRange(nodesList); foreach (var node in nodesList)
{
activeView.ScrollIntoView(node);
SelectedItems.Add(node);
}
}); });
} }
} }
@ -691,6 +699,7 @@ namespace ICSharpCode.ILSpy.AssemblyTree
if (node != null && focusNode) if (node != null && focusNode)
{ {
lastNode = node; lastNode = node;
activeView?.ScrollIntoView(node);
SelectedItems.Add(node); SelectedItems.Add(node);
} }
} }

Loading…
Cancel
Save