mirror of
https://github.com/status-im/react-native.git
synced 2025-02-27 00:20:31 +00:00
Disable onKeyPress logic when handler not defined
Summary: <!-- Required: Write your motivation here. If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged. --> There are some bugs surrounding the use of unicode characters that are causing issues with `onKeyPress` on Android: see https://github.com/facebook/react-native/issues/18405#issuecomment-373624413. We disable the creation and use of `ReactEditTextInputConnectionWrapper` unless the onKeyPress prop is specified, so that this code is 'opt-in' & not a general regression for every use of the TextInput. N.B. it seems to introduce a lot of unnecessary code complexity to allow for enabling/disabling the onKeyPress events after a InputConnection has been created in `onCreateInputConnection` when the keyboard focusses (a new input connection is created whenever a TextInput gains focus) so I opted not to for simplicity's sake. Build & debug RNTest app, verify ReactEditTextInputConnectionWrapper code not executed if onKeyPress function not specified. <!-- Required: Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos! --> [ANDROID] [BUGFIX] [TextInput] - Disable TextInput onKeyPress event from being fired unless callback specified. Closes https://github.com/facebook/react-native/pull/18443 Differential Revision: D8149625 Pulled By: hramos fbshipit-source-id: cdf28141d71cdedd67a6ef350e3a3b955f97e340
This commit is contained in:
parent
94393f8652
commit
41975f75d9
@ -81,6 +81,7 @@ public class ReactEditText extends EditText {
|
||||
private @Nullable ScrollWatcher mScrollWatcher;
|
||||
private final InternalKeyListener mKeyListener;
|
||||
private boolean mDetectScrollMovement = false;
|
||||
private boolean mOnKeyPress = false;
|
||||
private float mLetterSpacingPt = 0;
|
||||
|
||||
private ReactViewBackgroundManager mReactBackgroundManager;
|
||||
@ -175,7 +176,7 @@ public class ReactEditText extends EditText {
|
||||
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
|
||||
ReactContext reactContext = (ReactContext) getContext();
|
||||
InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
|
||||
if (inputConnection != null) {
|
||||
if (inputConnection != null && mOnKeyPress) {
|
||||
inputConnection = new ReactEditTextInputConnectionWrapper(inputConnection, reactContext, this);
|
||||
}
|
||||
|
||||
@ -274,6 +275,10 @@ public class ReactEditText extends EditText {
|
||||
mBlurOnSubmit = blurOnSubmit;
|
||||
}
|
||||
|
||||
public void setOnKeyPress(boolean onKeyPress) {
|
||||
mOnKeyPress = onKeyPress;
|
||||
}
|
||||
|
||||
public boolean getBlurOnSubmit() {
|
||||
if (mBlurOnSubmit == null) {
|
||||
// Default blurOnSubmit
|
||||
|
@ -308,6 +308,11 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = "onKeyPress", defaultBoolean = false)
|
||||
public void setOnKeyPress(final ReactEditText view, boolean onKeyPress) {
|
||||
view.setOnKeyPress(onKeyPress);
|
||||
}
|
||||
|
||||
// Sets the letter spacing as an absolute point size.
|
||||
// This extra handling, on top of what ReactBaseTextShadowNode already does, is required for the
|
||||
// correct display of spacing in placeholder (hint) text.
|
||||
|
Loading…
x
Reference in New Issue
Block a user