Merge "handleBackspace should always send KEYCODE_DEL for InputType.TYPE_NULL"
This commit is contained in:
commit
16d1e77a16
1 changed files with 25 additions and 22 deletions
|
@ -2152,13 +2152,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
// This should never happen.
|
||||
Log.e(TAG, "Backspace when we don't know the selection position");
|
||||
}
|
||||
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
|
||||
if (codePointBeforeCursor == Constants.NOT_A_CODE) {
|
||||
// Nothing to delete before the cursor.
|
||||
return;
|
||||
}
|
||||
final int lengthToDelete =
|
||||
Character.isSupplementaryCodePoint(codePointBeforeCursor) ? 2 : 1;
|
||||
if (mAppWorkAroundsUtils.isBeforeJellyBean() ||
|
||||
currentSettings.mInputAttributes.isTypeNull()) {
|
||||
// There are two possible reasons to send a key event: either the field has
|
||||
|
@ -2169,23 +2162,33 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
// applications are relying on this behavior so we continue to support it for
|
||||
// older apps, so we retain this behavior if the app has target SDK < JellyBean.
|
||||
sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
|
||||
if (mDeleteCount > DELETE_ACCELERATE_AT) {
|
||||
sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
|
||||
}
|
||||
} else {
|
||||
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
|
||||
if (codePointBeforeCursor == Constants.NOT_A_CODE) {
|
||||
// Nothing to delete before the cursor.
|
||||
return;
|
||||
}
|
||||
final int lengthToDelete =
|
||||
Character.isSupplementaryCodePoint(codePointBeforeCursor) ? 2 : 1;
|
||||
mConnection.deleteSurroundingText(lengthToDelete, 0);
|
||||
}
|
||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||
ResearchLogger.latinIME_handleBackspace(lengthToDelete,
|
||||
true /* shouldUncommitLogUnit */);
|
||||
}
|
||||
if (mDeleteCount > DELETE_ACCELERATE_AT) {
|
||||
final int codePointBeforeCursorToDeleteAgain =
|
||||
mConnection.getCodePointBeforeCursor();
|
||||
if (codePointBeforeCursorToDeleteAgain != Constants.NOT_A_CODE) {
|
||||
final int lengthToDeleteAgain = Character.isSupplementaryCodePoint(
|
||||
codePointBeforeCursorToDeleteAgain) ? 2 : 1;
|
||||
mConnection.deleteSurroundingText(lengthToDeleteAgain, 0);
|
||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||
ResearchLogger.latinIME_handleBackspace(lengthToDeleteAgain,
|
||||
true /* shouldUncommitLogUnit */);
|
||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||
ResearchLogger.latinIME_handleBackspace(lengthToDelete,
|
||||
true /* shouldUncommitLogUnit */);
|
||||
}
|
||||
if (mDeleteCount > DELETE_ACCELERATE_AT) {
|
||||
final int codePointBeforeCursorToDeleteAgain =
|
||||
mConnection.getCodePointBeforeCursor();
|
||||
if (codePointBeforeCursorToDeleteAgain != Constants.NOT_A_CODE) {
|
||||
final int lengthToDeleteAgain = Character.isSupplementaryCodePoint(
|
||||
codePointBeforeCursorToDeleteAgain) ? 2 : 1;
|
||||
mConnection.deleteSurroundingText(lengthToDeleteAgain, 0);
|
||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||
ResearchLogger.latinIME_handleBackspace(lengthToDeleteAgain,
|
||||
true /* shouldUncommitLogUnit */);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue