AvaloniaILSpy
AvaloniaILSpy copied to clipboard
Fix issues with history navigation - entries not getting selected correctly, duplicate text in decompiler output
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.
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.