diff options
author | 2014-08-06 17:38:34 +0000 | |
---|---|---|
committer | 2014-08-06 17:38:34 +0000 | |
commit | d393cf065ab042cc78f7a51010161425080afd1d (patch) | |
tree | 9dda410bc6723c96622cbc0c52f37d818f05d5b3 /java/src/com/android/inputmethod/latin/RichInputConnection.java | |
parent | cf66902f69911cc80da5b3a9e39634b0bc9ca343 (diff) | |
parent | 98e2748363355d2286215c798225d529f3a1cb34 (diff) | |
download | latinime-d393cf065ab042cc78f7a51010161425080afd1d.tar.gz latinime-d393cf065ab042cc78f7a51010161425080afd1d.tar.xz latinime-d393cf065ab042cc78f7a51010161425080afd1d.zip |
am 98e27483: am 9273f383: [HS3] Fix a bug on ICS
* commit '98e2748363355d2286215c798225d529f3a1cb34':
[HS3] Fix a bug on ICS
Diffstat (limited to 'java/src/com/android/inputmethod/latin/RichInputConnection.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/RichInputConnection.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java index a6b3b710b..ea63cef02 100644 --- a/java/src/com/android/inputmethod/latin/RichInputConnection.java +++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.inputmethodservice.InputMethodService; +import android.os.Build; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; @@ -811,4 +812,25 @@ public final class RichInputConnection { public boolean isCursorPositionKnown() { return INVALID_CURSOR_POSITION != mExpectedSelStart; } + + /** + * Work around a bug that was present before Jelly Bean upon rotation. + * + * Before Jelly Bean, there is a bug where setComposingRegion and other committing + * functions on the input connection get ignored until the cursor moves. This method works + * around the bug by wiggling the cursor first, which reactivates the connection and has + * the subsequent methods work, then restoring it to its original position. + * + * On platforms on which this method is not present, this is a no-op. + */ + public void maybeMoveTheCursorAroundAndRestoreToWorkaroundABug() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { + if (mExpectedSelStart > 0) { + mIC.setSelection(mExpectedSelStart - 1, mExpectedSelStart - 1); + } else { + mIC.setSelection(mExpectedSelStart + 1, mExpectedSelStart + 1); + } + mIC.setSelection(mExpectedSelStart, mExpectedSelEnd); + } + } } |