am 63b3fc0d
: am 15142588
: Merge "Have "no whitespace before cursor" upon gesture trigger phantom space" into jb-mr1-dev
* commit '63b3fc0d23696ec33b3cbe817bdd77f5d1a0aa03': Have "no whitespace before cursor" upon gesture trigger phantom space
This commit is contained in:
commit
b37e87e7d5
2 changed files with 15 additions and 0 deletions
|
@ -1429,6 +1429,12 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
|||
// The following is necessary for the case where the user typed something but didn't
|
||||
// manual pick it and didn't input any separator.
|
||||
mSpaceState = SPACE_STATE_PHANTOM;
|
||||
} else {
|
||||
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
|
||||
if (Constants.NOT_A_CODE != codePointBeforeCursor
|
||||
&& !Character.isWhitespace(codePointBeforeCursor)) {
|
||||
mSpaceState = SPACE_STATE_PHANTOM;
|
||||
}
|
||||
}
|
||||
mConnection.endBatchEdit();
|
||||
mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
|
||||
|
@ -1564,6 +1570,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
|||
// We have a TLD (or something that looks like this): make sure we don't add
|
||||
// a space even if currently in phantom mode.
|
||||
mSpaceState = SPACE_STATE_NONE;
|
||||
// TODO: use getCodePointBeforeCursor instead to improve performance and simplify the code
|
||||
final CharSequence lastOne = mConnection.getTextBeforeCursor(1, 0);
|
||||
if (lastOne != null && lastOne.length() == 1
|
||||
&& lastOne.charAt(0) == Keyboard.CODE_PERIOD) {
|
||||
|
@ -2284,6 +2291,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
|||
// This is a stopgap solution to avoid leaving a high surrogate alone in a text view.
|
||||
// In the future, we need to deprecate deteleSurroundingText() and have a surrogate
|
||||
// pair-friendly way of deleting characters in InputConnection.
|
||||
// TODO: use getCodePointBeforeCursor instead to improve performance
|
||||
final CharSequence lastChar = mConnection.getTextBeforeCursor(1, 0);
|
||||
if (!TextUtils.isEmpty(lastChar) && Character.isHighSurrogate(lastChar.charAt(0))) {
|
||||
mConnection.deleteSurroundingText(1, 0);
|
||||
|
|
|
@ -235,7 +235,14 @@ public final class RichInputConnection {
|
|||
hasSpaceBefore);
|
||||
}
|
||||
|
||||
public int getCodePointBeforeCursor() {
|
||||
if (mCommittedTextBeforeComposingText.length() < 1) return Constants.NOT_A_CODE;
|
||||
return Character.codePointBefore(mCommittedTextBeforeComposingText,
|
||||
mCommittedTextBeforeComposingText.length());
|
||||
}
|
||||
|
||||
public CharSequence getTextBeforeCursor(final int i, final int j) {
|
||||
// TODO: use mCommittedTextBeforeComposingText if possible to improve performance
|
||||
mIC = mParent.getCurrentInputConnection();
|
||||
if (null != mIC) return mIC.getTextBeforeCursor(i, j);
|
||||
return null;
|
||||
|
|
Loading…
Reference in a new issue