fix(android): returnPress invoked twice for some returnKeyTypes#5708
fix(android): returnPress invoked twice for some returnKeyTypes#5708EddyVerbruggen wants to merge 6 commits intoNativeScript:masterfrom
Conversation
| actionId === android.view.inputmethod.EditorInfo.IME_ACTION_SEARCH || | ||
| actionId === android.view.inputmethod.EditorInfo.IME_ACTION_SEND || | ||
| (event && event.getKeyCode() === android.view.KeyEvent.KEYCODE_ENTER)) { | ||
| (actionId !== android.view.inputmethod.EditorInfo.IME_ACTION_UNSPECIFIED && event && event.getKeyCode() === android.view.KeyEvent.KEYCODE_ENTER)) { |
There was a problem hiding this comment.
hey @EddyVerbruggen -- I might be missing something but I don't think the proposed addition changes the logic of the conditional statement. If actionId was IME_ACTION_UNSPECIFIED the conditional would have been truthy because of the 2nd row in the statement so if we progressed till the end we already know it is not IME_ACTION_UNSPECIFIED and we do not need to check for it explicitly:
if (actionId === android.view.inputmethod.EditorInfo.IME_NULL ||
actionId === android.view.inputmethod.EditorInfo.IME_ACTION_UNSPECIFIED ||
actionId === android.view.inputmethod.EditorInfo.IME_ACTION_DONE ||
actionId === android.view.inputmethod.EditorInfo.IME_ACTION_GO ||
actionId === android.view.inputmethod.EditorInfo.IME_ACTION_SEARCH ||
actionId === android.view.inputmethod.EditorInfo.IME_ACTION_SEND ||
(actionId !== android.view.inputmethod.EditorInfo.IME_ACTION_UNSPECIFIED && event && event.getKeyCode() === android.view.KeyEvent.KEYCODE_ENTER)) {
// If it is TextField, close the keyboard. If it is TextView, do not close it since the TextView is multiline
// https://github.com/NativeScript/NativeScript/issues/3111
if (textView.getMaxLines() === 1) {
owner.dismissSoftInput();
}
owner._onReturnPress();
}
There was a problem hiding this comment.
@manoldonev That's a very valid point. I tested this change with the 3.4 version of code modules where the actionId === android.view.inputmethod.EditorInfo.IME_NULL || actionId === android.view.inputmethod.EditorInfo.IME_ACTION_UNSPECIFIED || lines weren't present (both those static properties resolve to 0 btw) so that worked as expected. In the 4.0 branch this change doesn't make sense anymore as you pointed out.
There was a problem hiding this comment.
@manoldonev I wonder why we need those first 2 lines anyway, because there doesn't seem to be a returnPress event being fired on a TextView anyway.
I mean, this is the implementation on TextField, and there's no implemenation on TextView, and the superclass implementation is empty.
So I think we could remove those 2 lines from the if statement and this will work. Thoughts?
There was a problem hiding this comment.
@EddyVerbruggen @hshristov added those lines to fix #5121 (new lines with Japanese IME).
I wonder now whether we can remove the IME_ACTION_GO, IME_ACTION_SEARCH, and IME_ACTION_SEND explicit checks as it seems each of them gets a complementary IME_ACTION_UNSPECIFIED that we will handle -- have to check this.
…nPress event anyway.
…e4461-returnpress
|
Closing this in favor of #5727 |
|
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
PR Checklist
What is the current behavior?
A
returnKeyTypelikeIME_ACTION_GOalso fires anIME_ACTION_UNSPECIFIEDactionId withevent.getKeyCode() === KEYCODE_ENTERwhile navigating to the next field. This will trigger thereturnPressevent twice.What is the new behavior?
Check for the event not being
IME_ACTION_UNSPECIFIEDwhen evaluating the keycode.Fixes #4461.