aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java14
-rw-r--r--java/src/com/android/inputmethod/latin/define/ProductionFlags.java29
2 files changed, 31 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dd0060f4a..b641f3a8b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -55,6 +55,7 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.compat.InputConnectionCompatUtils;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
import com.android.inputmethod.event.Event;
@@ -413,11 +414,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (latinIme != null) {
executePendingImsCallback(latinIme, editorInfo, restarting);
latinIme.onStartInputInternal(editorInfo, restarting);
- if (ProductionFlags.USES_CURSOR_ANCHOR_MONITOR) {
- // Currently we need to call this every time when the IME is attached to
- // new application.
- // TODO: Consider if we can do this automatically in the framework.
- InputMethodServiceCompatUtils.setCursorAnchorMonitorMode(latinIme, 1);
+ if (ProductionFlags.ENABLE_CURSOR_RECT_CALLBACK) {
+ InputConnectionCompatUtils.requestCursorRect(
+ latinIme.getCurrentInputConnection(), true /* enableMonitor */);
+ }
+ if (ProductionFlags.ENABLE_CURSOR_ANCHOR_INFO_CALLBACK) {
+ InputConnectionCompatUtils.requestCursorAnchorInfo(
+ latinIme.getCurrentInputConnection(), true /* enableMonitor */,
+ true /* requestImmediateCallback */);
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
index 6dccd789d..d385cf840 100644
--- a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
+++ b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
@@ -23,15 +23,30 @@ public final class ProductionFlags {
public static final boolean IS_HARDWARE_KEYBOARD_SUPPORTED = false;
- // When true, enable {@link InputMethodService#onUpdateCursor} callback with
- // {@link InputMethodService#setCursorAnchorMonitorMode}, which is not yet available in
- // API level 19. Do not turn this on in production until the new API becomes publicly
- // available.
- public static final boolean USES_CURSOR_ANCHOR_MONITOR = false;
+ /**
+ * When true, enable {@link InputMethodService#onUpdateCursorAnchorInfo} callback via
+ * {@link InputConnection#requestCursorAnchorInfo}. This flag has no effect in API Level 20
+ * and prior. In general, this callback provides more detailed positional information,
+ * even though an explicit support is required by the editor.
+ */
+ public static final boolean ENABLE_CURSOR_ANCHOR_INFO_CALLBACK = false;
- // Include all suggestions from all dictionaries in {@link SuggestedWords#mRawSuggestions}.
+ /**
+ * When true, enable {@link InputMethodService#onUpdateCursor} callback via
+ * {@link InputConnection#requestCursorAnchorInfo}. Although this callback has been available
+ * since API Level 3, the callback has never been used until API Level 20. Thus it may or may
+ * not work well as expected. Should rely on {@link InputMethodService#onUpdateCursorAnchorInfo}
+ * whenever possible since it is supposed to be more reliable and accurate.
+ */
+ public static final boolean ENABLE_CURSOR_RECT_CALLBACK = false;
+
+ /**
+ * Include all suggestions from all dictionaries in {@link SuggestedWords#mRawSuggestions}.
+ */
public static final boolean INCLUDE_RAW_SUGGESTIONS = false;
- // When false, the metrics logging is not yet ready to be enabled.
+ /**
+ * When false, the metrics logging is not yet ready to be enabled.
+ */
public static final boolean IS_METRICS_LOGGING_SUPPORTED = false;
}