Dispose layout manager when embeddable control root is disposed. #14341
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does the pull request do?
Disposes LayoutManager when EmbeddableControlRoot is disposed.
What is the current behavior?
LayoutManager isn't disposed when EmbeddableControlRoot is no longer needed. This causes an issue on platforms where the root platform view can be recreated at any time, thus creating a new avalonia toplevel, like on Android. Because the old layout is never removed from the MediaContext, it attempts to layout controls on the next layout pass, when a new toplevel and layoutmanager is already created. This throws the following exception;
System.ArgumentException: 'Attempt to call InvalidateArrange on wrong LayoutManager.'
What is the updated/expected behavior with this PR?
How was the solution implemented (if it's not obvious)?
Checklist
Breaking changes
Obsoletions / Deprecations
Fixed issues
Fixes #14083