AvaloniaILSpy icon indicating copy to clipboard operation
AvaloniaILSpy copied to clipboard

Fix issues with history navigation - entries not getting selected correctly, duplicate text in decompiler output

Open KubeRoot opened this issue 1 year ago • 1 comments

Fixes the following two (related) issues:

  • After selecting entry A, then entry B, going back in history, and reselecting entry B, the decompiler output will now include both the results for A and B concatenated together. The results for A then persist when selecting any other entry, appearing above the decompilation for the actually selected entry.
  • After selecting entry A, then entry B, and going back in history, entry A does not appear to be selected on the list.

This PR changes TreeFlattener to implement IList<object>. The cause of the issue is the following line in Avalonia: SelectionModel.cs#L36 Specifically, when changing the selection programmatically, the SelectionModel tries to find the indices of any entries added to the selection in the source, to generate the ranges. However, since the source is casted to IEnumerable<object> here, casting the TreeFlattener results in null, causing the SelectionModel to abort updating the selection.'

Might be superseded by:

  • https://github.com/icsharpcode/AvaloniaILSpy/pull/141

Looks like an update to Avalonia might fix this issue: ba7e8a2 It seems like the current master branch uses IEnumerable instead of IEnumerable<T>, which should sidestep the problem.

KubeRoot avatar Nov 29 '23 22:11 KubeRoot

After getting the Avalonia v11 upgrade to (barely) run and testing, it seems to indeed not have the issue this fixes. I'm gonna leave this open just in case, but probably should be closed in favor of the Avalonia upgrade.

KubeRoot avatar Dec 01 '23 22:12 KubeRoot