Backward compatibility hack : send delete when empty.
Some apps depend on the keyboard sending something to them when the text is empty. This is BROKEN. Your app must not lie to the keyboard about what is before the cursor. If there is something to delete, you must not pretend there is not and try to catch some delete event. This will result in a bad user experience. This will not work with all IMEs. If your app needs this broken behavior, you're doing it wrong. Seriously guys, we're not in the era of typewriters any more, there are touch screens, there are gestures, there is accessibility, there are many innovative IMEs that don't have keys. Do *NOT* rely on key events. This change implements an ugly hack so that these broken apps may continue half-working with LatinIME. We are very unhappy about this. Bug: 12998568 Change-Id: Ia62ae2fbee4fee65b463acf3a79aafcfd0defa1dmain
parent
e0a425681c
commit
2c48846903
|
@ -973,7 +973,13 @@ public final class InputLogic {
|
||||||
} else {
|
} else {
|
||||||
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
|
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
|
||||||
if (codePointBeforeCursor == Constants.NOT_A_CODE) {
|
if (codePointBeforeCursor == Constants.NOT_A_CODE) {
|
||||||
// Nothing to delete before the cursor.
|
// HACK for backward compatibility with broken apps that haven't realized
|
||||||
|
// yet that hardware keyboards are not the only way of inputting text.
|
||||||
|
// Nothing to delete before the cursor. We should not do anything, but many
|
||||||
|
// broken apps expect something to happen in this case so that they can
|
||||||
|
// catch it and have their broken interface react. If you need the keyboard
|
||||||
|
// to do this, you're doing it wrong -- please fix your app.
|
||||||
|
mConnection.deleteSurroundingText(1, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final int lengthToDelete =
|
final int lengthToDelete =
|
||||||
|
|
Loading…
Reference in New Issue