aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyDetector.java15
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java4
2 files changed, 13 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index ea3f6236a..d342c6df0 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -260,12 +260,19 @@ public class KeyDetector {
final int touchX = getTouchX(x);
final int touchY = getTouchY(y);
- for (final Key key : mKeyboard.getNearestKeys(touchX, touchY)) {
- if (key.isOnKey(touchX, touchY)) {
- return key;
+ int minDistance = Integer.MAX_VALUE;
+ Key primaryKey = null;
+ for (final Key key: mKeyboard.getNearestKeys(touchX, touchY)) {
+ final boolean isOnKey = key.isOnKey(touchX, touchY);
+ final int distance = key.squaredDistanceToEdge(touchX, touchY);
+ // TODO: need to take care of hitbox overlaps
+ if (primaryKey == null || distance < minDistance
+ || (distance == minDistance && isOnKey)) {
+ minDistance = distance;
+ primaryKey = key;
}
}
- return null;
+ return primaryKey;
}
public static String printableCode(Key key) {
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index a9609310c..251063ec4 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -140,8 +140,8 @@ public class WordComposer {
keyX = x;
keyY = y;
} else {
- codes = keyDetector.newCodeArray();
- keyDetector.getNearbyCodes(x, y, codes);
+ final Key key = keyDetector.detectHitKey(x, y);
+ codes = new int[] { key != null ? key.mCode : NOT_A_CODE };
keyX = keyDetector.getTouchX(x);
keyY = keyDetector.getTouchY(y);
}