diff options
| author | 2024-10-01 16:50:00 -0700 | |
|---|---|---|
| committer | 2024-10-01 16:50:00 -0700 | |
| commit | 26f96a62f3c20a997e225453d370f943b048b735 (patch) | |
| tree | 2a557de5a1f9f723c25f15071fde2edb2c24785b | |
| parent | 5db396ab0714ae81f506dc6e98f10ce9a5325b14 (diff) | |
Check getShowSoftInputOnFocus() for stylus input
When there is stylus input on a text editor which doesn't support
handwriting, a toast error message is displayed and the soft keyboard is
shown. However, if the text editor has setShowSoftInputOnFocus(false),
then this should be respected by not showing the soft keyboard.
Bug: 363180475
Test: atest StylusHandwritingTest
Flag: com.android.text.flags.handwriting_unsupported_show_soft_input_fix
Change-Id: I906fe51586d173dee37395b63c33632e94af6af4
| -rw-r--r-- | core/java/android/text/flags/flags.aconfig | 10 | ||||
| -rw-r--r-- | core/java/android/view/HandwritingInitiator.java | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig index 3599332af955..ec5b488ccbbd 100644 --- a/core/java/android/text/flags/flags.aconfig +++ b/core/java/android/text/flags/flags.aconfig @@ -178,3 +178,13 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "handwriting_unsupported_show_soft_input_fix" + namespace: "text" + description: "Don't show soft keyboard on stylus input if text field doesn't support handwriting and getShowSoftInputOnFocus() returns false." + bug: "363180475" + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/core/java/android/view/HandwritingInitiator.java b/core/java/android/view/HandwritingInitiator.java index f1329635f16c..c2179997a92d 100644 --- a/core/java/android/view/HandwritingInitiator.java +++ b/core/java/android/view/HandwritingInitiator.java @@ -19,6 +19,7 @@ package android.view; import static com.android.text.flags.Flags.handwritingCursorPosition; import static com.android.text.flags.Flags.handwritingTrackDisabled; import static com.android.text.flags.Flags.handwritingUnsupportedMessage; +import static com.android.text.flags.Flags.handwritingUnsupportedShowSoftInputFix; import android.annotation.FlaggedApi; import android.annotation.NonNull; @@ -241,7 +242,11 @@ public class HandwritingInitiator { if (!candidateView.hasFocus()) { requestFocusWithoutReveal(candidateView); } - mImm.showSoftInput(candidateView, 0); + if (!handwritingUnsupportedShowSoftInputFix() + || (candidateView instanceof TextView tv + && tv.getShowSoftInputOnFocus())) { + mImm.showSoftInput(candidateView, 0); + } mState.mHandled = true; mState.mShouldInitHandwriting = false; motionEvent.setAction((motionEvent.getAction() |