diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig index c83285a5c889..3599332af955 100644 --- a/core/java/android/text/flags/flags.aconfig +++ b/core/java/android/text/flags/flags.aconfig @@ -168,3 +168,13 @@ flag { description: "Decouple variation settings, weight and style information from Typeface class" bug: "361260253" } + +flag { + name: "handwriting_track_disabled" + namespace: "text" + description: "Handwriting initiator tracks focused view even if handwriting is disabled to fix initiation bug." + bug: "361256391" + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/core/java/android/view/HandwritingInitiator.java b/core/java/android/view/HandwritingInitiator.java index ab9bd1fdfd72..f1329635f16c 100644 --- a/core/java/android/view/HandwritingInitiator.java +++ b/core/java/android/view/HandwritingInitiator.java @@ -17,6 +17,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 android.annotation.FlaggedApi; @@ -352,7 +353,7 @@ public class HandwritingInitiator { final View focusedView = getFocusedView(); - if (!view.isAutoHandwritingEnabled()) { + if (!handwritingTrackDisabled() && !view.isAutoHandwritingEnabled()) { clearFocusedView(focusedView); return; } @@ -363,7 +364,8 @@ public class HandwritingInitiator { updateFocusedView(view); if (mState != null && mState.mPendingFocusedView != null - && mState.mPendingFocusedView.get() == view) { + && mState.mPendingFocusedView.get() == view + && (!handwritingTrackDisabled() || view.isAutoHandwritingEnabled())) { startHandwriting(view); } } @@ -416,7 +418,7 @@ public class HandwritingInitiator { */ @VisibleForTesting public boolean updateFocusedView(@NonNull View view) { - if (!view.shouldInitiateHandwriting()) { + if (!handwritingTrackDisabled() && !view.shouldInitiateHandwriting()) { mFocusedView = null; return false; } @@ -424,8 +426,10 @@ public class HandwritingInitiator { final View focusedView = getFocusedView(); if (focusedView != view) { mFocusedView = new WeakReference<>(view); - // A new view just gain focus. By default, we should show hover icon for it. - mShowHoverIconForConnectedView = true; + if (!handwritingTrackDisabled() || view.shouldInitiateHandwriting()) { + // A new view just gain focus. By default, we should show hover icon for it. + mShowHoverIconForConnectedView = true; + } } return true;