[DRAFT] - Focus Traversal Api #18647
Draft
+1,729
−72
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?
This PR is based on #18373 , and if moved out of draft, will supercede it.
This PR aims to address concern reported in #7607 . It implements a few of the core focus search api, and attempts to keep the core implementation as close to WinUI's as possible.
The following api are provided over the preceding PR;
Implementation is as close to WinUI's as possible, with some differences. All api returns a
IInputElement
instead ofAvaloniaObject
, the counterpart to WinUI'sDependencyObject
. WinUI can have focusableDependencyObject
without making themUIElements
. We can't do this directly in Avalonia, as the special class WinUI made an exception for aren'tAvaloniaObject
s on our end. This are TextRuns, specifically Hyperlinks. All our TextRuns are plain CLR classes.What is the current behavior?
What is the updated/expected behavior with this PR?
How was the solution implemented (if it's not obvious)?
Checklist
Breaking changes
Because focus search requires a root visual in all cases,
FocusManager
is no longer stored as a singleton inAvaloniaLocator
, but instead each toplevel has its ownFocusManager
.Obsoletions / Deprecations
Fixed issues