Fix Focus Outline for Programmatical focus - #16373
Fix Focus Outline for Programmatical focus#16373Vineeth (vineethkuttan) wants to merge 2 commits into
Conversation
* Remove Focus Outline for Programmatical Focus * Change files * format changes
There was a problem hiding this comment.
Pull request overview
Fixes Fabric focus visuals appearing during startup-time programmatic focus.
Changes:
- Treats programmatic focus as pointer focus unless preserving keyboard focus.
- Adds a patch changelog entry.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
vnext/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp |
Corrects programmatic focus-state selection. |
change/react-native-windows-85a3d26d-f9c2-4888-9e32-a6a3f9f4a2b9.json |
Adds release-note metadata. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| @@ -0,0 +1,7 @@ | |||
| { | |||
| "type": "patch", | |||
| "comment": "Remove Focus Outline for Programmatical Focus", | |||
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (2)
change/react-native-windows-6edc9831-103f-4ab1-ad63-20824f1d2d3e.json:3
- The release-note adjective should be “Programmatic,” not “Programmatical.”
"comment": "Fix Focus Outline for Programmatical focus",
vnext/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp:103
- Keyboard navigation into a previously unfocused root now loses its focus visual.
ReactNativeIsland.cpp:919-926handlesNavigateFocusRequestedby callingNavigateFocus, which passesProgrammatichere while the initial state isUnfocused; this condition converts that request toPointer, so the ring guard inCompositionViewComponentView.cpp:417-424suppresses the outline. Distinguish true programmatic focus from host keyboard navigation (for example, propagateKeyboardthrough the navigation path) instead of inferring the source solely from the previous focus state.
(!m_useKeyboardForProgrammaticFocus || m_focusState != winrt::Microsoft::ReactNative::FocusState::Keyboard)
|
programmatic focus should show the focus visuals based on the previous focus state. If the user is using keyboard focus already then it should continue to be so. On first boot we dont know which to use, so we currently default to showing it. Recently WinAppSDK added this API which is maybe what we should use: |
Description
When a component receives programmatic focus (via autoFocus or ref.focus()) during app startup, the focus outline/rectangle is displayed. This should not happen — programmatic focus should not trigger the focus visual, only keyboard-initiated focus should.
The same component focused programmatically at any other time (e.g., triggered by a button press) correctly does not show the focus outline. The issue is isolated to the initial app start focus.
Type of Change
Bug fix (non-breaking change which fixes an issue)
resolves Focus outline/visual incorrectly shown when element receives focus programmatically on app start #16177
Testing
Tested in playground
Changelog
Should this change be included in the release notes: yes
Fix Focus Outline for Programmatical focus
Microsoft Reviewers: Open in CodeFlow