aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/event
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/event
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/event')
-rw-r--r--java/src/com/android/inputmethod/event/CombinerChain.java16
-rw-r--r--java/src/com/android/inputmethod/event/Event.java2
2 files changed, 16 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java
index 5ca9842c1..8b59dc52a 100644
--- a/java/src/com/android/inputmethod/event/CombinerChain.java
+++ b/java/src/com/android/inputmethod/event/CombinerChain.java
@@ -17,7 +17,9 @@
package com.android.inputmethod.event;
import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.CollectionUtils;
import java.util.ArrayList;
@@ -84,7 +86,19 @@ public class CombinerChain {
}
}
if (null != event) {
- mCombinedText.append(event.getTextToCommit());
+ // TODO: figure out the generic way of doing this
+ if (Constants.CODE_DELETE == event.mKeyCode) {
+ final int length = mCombinedText.length();
+ if (length > 0) {
+ final int lastCodePoint = mCombinedText.codePointBefore(length);
+ mCombinedText.delete(length - Character.charCount(lastCodePoint), length);
+ }
+ } else {
+ final CharSequence textToCommit = event.getTextToCommit();
+ if (!TextUtils.isEmpty(textToCommit)) {
+ mCombinedText.append(textToCommit);
+ }
+ }
}
mStateFeedback.clear();
for (int i = mCombiners.size() - 1; i >= 0; --i) {
diff --git a/java/src/com/android/inputmethod/event/Event.java b/java/src/com/android/inputmethod/event/Event.java
index 2bfe0732d..646590948 100644
--- a/java/src/com/android/inputmethod/event/Event.java
+++ b/java/src/com/android/inputmethod/event/Event.java
@@ -229,9 +229,9 @@ public class Event {
switch (mType) {
case EVENT_MODE_KEY:
case EVENT_NOT_HANDLED:
+ case EVENT_TOGGLE:
return "";
case EVENT_INPUT_KEYPRESS:
- case EVENT_TOGGLE:
return StringUtils.newSingleCodePointString(mCodePoint);
case EVENT_GESTURE:
case EVENT_SOFTWARE_GENERATED_STRING: