Allow double-space-period after relevant punctuation signs.
This allows the user to enter a period via double-space after quotes, currency symbols, brackets and other non-sentence-finishing punctuation marks. Bug: 3430389 Change-Id: Ibe40b3902861207eb918e7be6113e8be12216f53
This commit is contained in:
parent
fa9f4d1bad
commit
2b4eabed2b
2 changed files with 22 additions and 2 deletions
|
@ -70,6 +70,14 @@ public class Keyboard {
|
|||
public static final int CODE_DASH = '-';
|
||||
public static final int CODE_SINGLE_QUOTE = '\'';
|
||||
public static final int CODE_DOUBLE_QUOTE = '"';
|
||||
// TODO: Check how this should work for right-to-left languages. It seems to stand
|
||||
// that for rtl languages, a closing parenthesis is a left parenthesis. Is this
|
||||
// managed by the font? Or is it a different char?
|
||||
public static final int CODE_CLOSING_PARENTHESIS = ')';
|
||||
public static final int CODE_CLOSING_SQUARE_BRACKET = ']';
|
||||
public static final int CODE_CLOSING_CURLY_BRACKET = '}';
|
||||
public static final int CODE_CLOSING_ANGLE_BRACKET = '>';
|
||||
|
||||
|
||||
/** Special keys code. These should be aligned with values/keycodes.xml */
|
||||
public static final int CODE_DUMMY = 0;
|
||||
|
|
|
@ -992,13 +992,25 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
|||
}
|
||||
}
|
||||
|
||||
private static boolean canBeFollowedByPeriod(final int codePoint) {
|
||||
// TODO: Check again whether there really ain't a better way to check this.
|
||||
// TODO: This should probably be language-dependant...
|
||||
return Character.isLetterOrDigit(codePoint)
|
||||
|| codePoint == Keyboard.CODE_SINGLE_QUOTE
|
||||
|| codePoint == Keyboard.CODE_DOUBLE_QUOTE
|
||||
|| codePoint == Keyboard.CODE_CLOSING_PARENTHESIS
|
||||
|| codePoint == Keyboard.CODE_CLOSING_SQUARE_BRACKET
|
||||
|| codePoint == Keyboard.CODE_CLOSING_CURLY_BRACKET
|
||||
|| codePoint == Keyboard.CODE_CLOSING_ANGLE_BRACKET;
|
||||
}
|
||||
|
||||
private void maybeDoubleSpace() {
|
||||
if (mCorrectionMode == Suggest.CORRECTION_NONE) return;
|
||||
final InputConnection ic = getCurrentInputConnection();
|
||||
if (ic == null) return;
|
||||
CharSequence lastThree = ic.getTextBeforeCursor(3, 0);
|
||||
final CharSequence lastThree = ic.getTextBeforeCursor(3, 0);
|
||||
if (lastThree != null && lastThree.length() == 3
|
||||
&& Character.isLetterOrDigit(lastThree.charAt(0))
|
||||
&& canBeFollowedByPeriod(lastThree.charAt(0))
|
||||
&& lastThree.charAt(1) == Keyboard.CODE_SPACE
|
||||
&& lastThree.charAt(2) == Keyboard.CODE_SPACE
|
||||
&& mHandler.isAcceptingDoubleSpaces()) {
|
||||
|
|
Loading…
Reference in a new issue