aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/WordComposer.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-03-25 15:57:47 +0900
committerJean Chalard <jchalard@google.com>2014-03-25 17:57:03 +0900
commit1079665c3c017ee024a2ffdaf3488cc8c37f087a (patch)
treeeb9bbdd03698b38dc816cbac6f3a327d0fcff95a /java/src/com/android/inputmethod/latin/WordComposer.java
parent37b9562fd7b593c90d7ab383ec650f39a7c0f621 (diff)
downloadlatinime-1079665c3c017ee024a2ffdaf3488cc8c37f087a.tar.gz
latinime-1079665c3c017ee024a2ffdaf3488cc8c37f087a.tar.xz
latinime-1079665c3c017ee024a2ffdaf3488cc8c37f087a.zip
[CB14] Implement backspace in the combiner chain
Bug: 13622107 Bug: 13406701 Change-Id: I0023b398c4451253f9f717e2bd990b8a054004bc
Diffstat (limited to 'java/src/com/android/inputmethod/latin/WordComposer.java')
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java29
1 files changed, 7 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index a60ca3d41..a955f375b 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -314,29 +314,14 @@ public final class WordComposer {
}
/**
- * Delete the last keystroke as a result of hitting backspace.
+ * Delete the last composing unit as a result of hitting backspace.
*/
- public void deleteLast() {
- final int size = size();
- if (size > 0) {
- // Note: mTypedWord.length() and mCodes.length differ when there are surrogate pairs
- final int stringBuilderLength = mTypedWord.length();
- if (stringBuilderLength < size) {
- throw new RuntimeException(
- "In WordComposer: mCodes and mTypedWords have non-matching lengths");
- }
- final int lastChar = mTypedWord.codePointBefore(stringBuilderLength);
- // TODO: with events and composition, this is absolutely not necessarily true.
- mEvents.remove(mEvents.size() - 1);
- if (Character.isSupplementaryCodePoint(lastChar)) {
- mTypedWord.delete(stringBuilderLength - 2, stringBuilderLength);
- } else {
- mTypedWord.deleteCharAt(stringBuilderLength - 1);
- }
- if (Character.isUpperCase(lastChar)) mCapsCount--;
- if (Character.isDigit(lastChar)) mDigitsCount--;
- refreshSize();
- }
+ public void deleteLast(final Event event) {
+ mCombinerChain.processEvent(mEvents, event);
+ mTypedWord.replace(0, mTypedWord.length(),
+ mCombinerChain.getComposingWordWithCombiningFeedback().toString());
+ mEvents.add(event);
+ refreshSize();
// We may have deleted the last one.
if (0 == size()) {
mIsFirstCharCapitalized = false;