icsharpcode / AvaloniaILSpy

Avalonia-based .NET Decompiler (port of ILSpy)
1.5k stars 169 forks source link

Upgrade Avalonia v11 #141

Open DamianSuess opened 1 year ago

DamianSuess commented 1 year ago

NOTE: This upgrade is a work-in-progress

Feature Includes:

References

Avalonia Changes

Pending Fixes

Notes

Stretch TO-DO

Overview of Changes Made

Focus Manager

OpenListDialog.xaml.cs

// Avalonia v0.10
//// TemplateApplied += (sender, e) => Application.Current.FocusManager.Focus(listView);

TemplateApplied += (sender, e) => {
  // Avalonia v11
  var focusManager = TopLevel.GetTopLevel(listView).FocusManager;
  focusManager.GetFocusedElement().Focus();
};

Clipboard

// v0.10
App.Current.Clipboard.SetTextAsync(sb.ToString());

// v11.0 - TopLevel
var clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
clipboard.SetTextAsync(sb.ToString());

// v11.0 - Main Window
var clipboard = App.Current.GetMainWindow()?.Clipboard;
clipboard.SetTextAsync(member.ReflectionName);
christophwille commented 1 year ago

Avalonia-v11-Update.md - please add that to the description of the PR but remove the file

christophwille commented 1 year ago

Please rebase on latest master - because then the build automation fixes I made will kick in.

DamianSuess commented 1 year ago

Wonderful, thanks for the heads up on both areas @christophwille. This upgrade isn't as smooth as I'd like it to be, but it was expected considering there are a lot of breaking changes moving to v11.

I'm trying to keep tabs on the undocumented Avalonia v11 upgrade areas and making updates for their docs as well.

christophwille commented 1 year ago

Really appreciate you providing feedback to the Avalonia project!

christophwille commented 1 year ago

How are things going? How bad is it?

DamianSuess commented 1 year ago

Hi @christophwille, though it's not as straightforward as I'd like it to be, it is going well.

The biggest part of the slow turnaround comes down to time prioritization during the summer months. It's the usual adult life items: open-source projects, fixing my house, working on a new startup, rewind-repeat.

DamianSuess commented 11 months ago

I didn't forget about this repo. Daytime job got very busy as we're aiming to deliver a lot in Q3. I aim to see this completed and will wrap this upgrade up as time allows.

christophwille commented 9 months ago

How does it look like on your end - got a little time to chip away at this?

DamianSuess commented 9 months ago

Thanks Chris for the tap on the shoulder, things got super busy at work over the past few months (got to love layoff/fire season).

I'll get back on track for you sir with Christmas vacation time coming up soon

KubeRoot commented 9 months ago

Decided to try to get this to build and run, and surprisingly, I did get it to run in some capacity. The decompiler output isn't displaying anything, and frankly, more things are broken than working (including some outright commented out bits), but I hope I got at least some things right - the treeview appears to be functioning correctly!

Screenshot ![image](https://github.com/icsharpcode/AvaloniaILSpy/assets/6917698/7b0d8b24-342d-453a-9023-55ecce8de8bd)

I put up the changes on https://github.com/KubeRoot/AvaloniaILSpy/tree/UpgradeAvalonia11-WIP, but I didn't care much for code quality with this, so not sure how much of this is usable. If I figure out more details, I might make a PR to your repository, if you don't mind.

EDIT: Small update, figured out the errors I've made with some things. Code is now rendering, the menu and toolbar are populated, font selection is working. I might try to figure out how theming should work, but I can see a few big issues that I don't know how to tackle, like generating the icons and PlatformDependentWindow

maxkatz6 commented 7 months ago

@DamianSuess @KubeRoot @christophwille please let me know if you need any help with this upgrade.

Although, I am wondering if it might be better to recreate this project from latest WPF-version sources.

christophwille commented 7 months ago

@maxkatz6 please coordinate the porting / adaptation work with @DamianSuess (I don't know about his plans or available time)