Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95b7bd3b authored by David Faden's avatar David Faden Committed by Jean Chalard
Browse files

Add a private IME option to suppress the gesture floating preview text.

If the option defined by Constants.NO_FLOATING_GESTURE_PREVIEW is set
for a text field via EditorInfo.privateImeOptions, the floating gesture
preview will be suppressed regardless of the settings preference.

Feature request:
bug: 17325039

Change-Id: I1a1df194369e8f2d76abd9d84939a057f55f4a1c
parent dec2c2d9
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -57,6 +57,13 @@ public final class Constants {
        @SuppressWarnings("dep-ann")
        @SuppressWarnings("dep-ann")
        public static final String FORCE_ASCII = "forceAscii";
        public static final String FORCE_ASCII = "forceAscii";


        /**
         * The private IME option used to suppress the floating gesture preview for a given text
         * field. This overrides the corresponding keyboard settings preference.
         * {@link com.android.inputmethod.latin.settings.SettingsValues#mGestureFloatingPreviewTextEnabled}
         */
        public static final String NO_FLOATING_GESTURE_PREVIEW = "noGestureFloatingPreview";

        private ImeOption() {
        private ImeOption() {
            // This utility class is not publicly instantiable.
            // This utility class is not publicly instantiable.
        }
        }
+11 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.inputmethod.latin;
package com.android.inputmethod.latin;


import static com.android.inputmethod.latin.Constants.ImeOption.NO_FLOATING_GESTURE_PREVIEW;
import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE;
import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE;
import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE_COMPAT;
import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE_COMPAT;


@@ -42,6 +43,12 @@ public final class InputAttributes {
    final public boolean mApplicationSpecifiedCompletionOn;
    final public boolean mApplicationSpecifiedCompletionOn;
    final public boolean mShouldInsertSpacesAutomatically;
    final public boolean mShouldInsertSpacesAutomatically;
    final public boolean mShouldShowVoiceInputKey;
    final public boolean mShouldShowVoiceInputKey;
    /**
     * Whether the floating gesture preview should be disabled. If true, this should override the
     * corresponding keyboard settings preference, always suppressing the floating preview text.
     * {@link com.android.inputmethod.latin.settings.SettingsValues#mGestureFloatingPreviewTextEnabled}
     */
    final public boolean mDisableGestureFloatingPreviewText;
    final private int mInputType;
    final private int mInputType;
    final private EditorInfo mEditorInfo;
    final private EditorInfo mEditorInfo;
    final private String mPackageNameForPrivateImeOptions;
    final private String mPackageNameForPrivateImeOptions;
@@ -76,6 +83,7 @@ public final class InputAttributes {
            mApplicationSpecifiedCompletionOn = false;
            mApplicationSpecifiedCompletionOn = false;
            mShouldInsertSpacesAutomatically = false;
            mShouldInsertSpacesAutomatically = false;
            mShouldShowVoiceInputKey = false;
            mShouldShowVoiceInputKey = false;
            mDisableGestureFloatingPreviewText = false;
            return;
            return;
        }
        }
        // inputClass == InputType.TYPE_CLASS_TEXT
        // inputClass == InputType.TYPE_CLASS_TEXT
@@ -107,6 +115,9 @@ public final class InputAttributes {
                || hasNoMicrophoneKeyOption();
                || hasNoMicrophoneKeyOption();
        mShouldShowVoiceInputKey = !noMicrophone;
        mShouldShowVoiceInputKey = !noMicrophone;


        mDisableGestureFloatingPreviewText = InputAttributes.inPrivateImeOptions(
                mPackageNameForPrivateImeOptions, NO_FLOATING_GESTURE_PREVIEW, editorInfo);

        // If it's a browser edit field and auto correct is not ON explicitly, then
        // If it's a browser edit field and auto correct is not ON explicitly, then
        // disable auto correction, but keep suggestions on.
        // disable auto correction, but keep suggestions on.
        // If NO_SUGGESTIONS is set, don't do prediction.
        // If NO_SUGGESTIONS is set, don't do prediction.
+2 −2
Original line number Original line Diff line number Diff line
@@ -162,8 +162,8 @@ public class SettingsValues {
                autoCorrectionThresholdRawValue);
                autoCorrectionThresholdRawValue);
        mGestureInputEnabled = Settings.readGestureInputEnabled(prefs, res);
        mGestureInputEnabled = Settings.readGestureInputEnabled(prefs, res);
        mGestureTrailEnabled = prefs.getBoolean(Settings.PREF_GESTURE_PREVIEW_TRAIL, true);
        mGestureTrailEnabled = prefs.getBoolean(Settings.PREF_GESTURE_PREVIEW_TRAIL, true);
        mGestureFloatingPreviewTextEnabled = prefs.getBoolean(
        mGestureFloatingPreviewTextEnabled = !mInputAttributes.mDisableGestureFloatingPreviewText
                Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true);
                && prefs.getBoolean(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true);
        mPhraseGestureEnabled = Settings.readPhraseGestureEnabled(prefs, res);
        mPhraseGestureEnabled = Settings.readPhraseGestureEnabled(prefs, res);
        mAutoCorrectionEnabledPerUserSettings = mAutoCorrectEnabled
        mAutoCorrectionEnabledPerUserSettings = mAutoCorrectEnabled
                && !mInputAttributes.mInputTypeNoAutoCorrect;
                && !mInputAttributes.mInputTypeNoAutoCorrect;