* commit '98e2748363355d2286215c798225d529f3a1cb34': [HS3] Fix a bug on ICS
This commit is contained in:
commit
d393cf065a
2 changed files with 23 additions and 0 deletions
|
@ -17,6 +17,7 @@
|
||||||
package com.android.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
import android.inputmethodservice.InputMethodService;
|
import android.inputmethodservice.InputMethodService;
|
||||||
|
import android.os.Build;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
@ -811,4 +812,25 @@ public final class RichInputConnection {
|
||||||
public boolean isCursorPositionKnown() {
|
public boolean isCursorPositionKnown() {
|
||||||
return INVALID_CURSOR_POSITION != mExpectedSelStart;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1437,6 +1437,7 @@ public final class InputLogic {
|
||||||
mLatinIME.getCoordinatesForCurrentKeyboard(codePoints));
|
mLatinIME.getCoordinatesForCurrentKeyboard(codePoints));
|
||||||
mWordComposer.setCursorPositionWithinWord(
|
mWordComposer.setCursorPositionWithinWord(
|
||||||
typedWord.codePointCount(0, numberOfCharsInWordBeforeCursor));
|
typedWord.codePointCount(0, numberOfCharsInWordBeforeCursor));
|
||||||
|
mConnection.maybeMoveTheCursorAroundAndRestoreToWorkaroundABug();
|
||||||
mConnection.setComposingRegion(expectedCursorPosition - numberOfCharsInWordBeforeCursor,
|
mConnection.setComposingRegion(expectedCursorPosition - numberOfCharsInWordBeforeCursor,
|
||||||
expectedCursorPosition + range.getNumberOfCharsInWordAfterCursor());
|
expectedCursorPosition + range.getNumberOfCharsInWordAfterCursor());
|
||||||
if (suggestions.size() <= (shouldIncludeResumedWordInSuggestions ? 1 : 0)) {
|
if (suggestions.size() <= (shouldIncludeResumedWordInSuggestions ? 1 : 0)) {
|
||||||
|
|
Loading…
Reference in a new issue