You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Fabric] Implement selectTextOnFocus prop in TextInput - #14412
Selects the whole text when the TextInput is focused
Drops the selection when TextInput loses focus
The function is called in two places:
OnPointerReleased(), if the mouse left button was pressed, to select the text.
OnLostFocus(), to clear the selection.
Text selection will not occur if clearTextOnFocus prop is set to true. This is purely by design, as the RN documentation doesn't specify what the behavior should be. For reference, if both props are set to true, Android doesn't clear the text on focus and performs the selection, but iOS clears the text input.
Screenshots
selectTextOnFocus.mp4
Testing
Added e2e tests to TextInputComponentTest and two TextInput fields in playground, in both cases demonstrating the capabilities explained above.
Changelog
Yes
Implement selectTextOnFocus for TextInput in Fabric
Can we maybe just map selectTextOnFocus to ES_SAVESEL?
Turn on:
m_textServices->TxSendMessage(EM_SETOPTIONS, ECOOP_OR, ES_SAVESEL);
Turn off:
m_textServices->TxSendMessage(EM_SETOPTIONS, ECOOP_AND, ~ES_SAVESEL);
Not using onFocus means that we miss various other method of the textinput gaining focus. (Keyboarding, accessibility, programatic)
Can we maybe just map selectTextOnFocus to ES_SAVESEL? Turn on: m_textServices->TxSendMessage(EM_SETOPTIONS, ECOOP_OR, ES_SAVESEL); Turn off: m_textServices->TxSendMessage(EM_SETOPTIONS, ECOOP_AND, ~ES_SAVESEL);
Not using onFocus means that we miss various other method of the textinput gaining focus. (Keyboarding, accessibility, programatic)
acoates-ms I agree we should take care of the other ways to focus, not just the left mouse button. However, I tried both ES_SAVESEL/ECO_SAVESEL and neither seem to do anything.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Description
Type of Change
New feature.
Why
Implement selectTextOnFocus prop in TextInput. It is implemented in Paper; this PR brings the Fabric implementation.
Resolves #13133
What
Created a function that:
The function is called in two places:
OnPointerReleased(), if the mouse left button was pressed, to select the text.OnLostFocus(), to clear the selection.Text selection will not occur if
clearTextOnFocusprop is set totrue. This is purely by design, as the RN documentation doesn't specify what the behavior should be. For reference, if both props are set to true, Android doesn't clear the text on focus and performs the selection, but iOS clears the text input.Screenshots
selectTextOnFocus.mp4
Testing
Added e2e tests to TextInputComponentTest and two TextInput fields in playground, in both cases demonstrating the capabilities explained above.
Changelog
Yes
Implement selectTextOnFocus for TextInput in Fabric
Microsoft Reviewers: Open in CodeFlow