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
main
David Faden 2014-08-28 16:56:04 -07:00 committed by Jean Chalard
parent dec2c2d910
commit 95b7bd3ba5
3 changed files with 20 additions and 2 deletions

View File

@ -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.
} }

View File

@ -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.

View File

@ -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;