Fix a bug where dead space would appear on the keyboard.

This change fixes a bug where there would be pixels on the keyboard
that would not return a key although it's between two keys - or even
right on top of one.
This change makes it so that the closest key to the touch - within a
certain threshold - is always returned, regardless of whether the
touch is inside or not.

Bug: 4348994

Change-Id: I8f6102d6787eb025cc3c50a26d3a475aeafc4b64
This commit is contained in:
Jean Chalard 2011-04-28 21:47:13 +09:00
parent d8f52a4f18
commit 8d165bb5d1

View file

@ -174,11 +174,12 @@ public class KeyDetector {
int primaryIndex = NOT_A_KEY; int primaryIndex = NOT_A_KEY;
for (final int index : mKeyboard.getNearestKeys(touchX, touchY)) { for (final int index : mKeyboard.getNearestKeys(touchX, touchY)) {
final Key key = keys.get(index); final Key key = keys.get(index);
// TODO: should be okay to skip calling isInside()
final boolean isInside = mKeyboard.isInside(key, touchX, touchY); final boolean isInside = mKeyboard.isInside(key, touchX, touchY);
final int distance = key.squaredDistanceToEdge(touchX, touchY); final int distance = key.squaredDistanceToEdge(touchX, touchY);
if (isInside || (mProximityCorrectOn && distance < mProximityThresholdSquare)) { if (isInside || (mProximityCorrectOn && distance < mProximityThresholdSquare)) {
final int insertedPosition = sortNearbyKeys(index, distance); final int insertedPosition = sortNearbyKeys(index, distance);
if (insertedPosition == 0 && isInside) if (insertedPosition == 0)
primaryIndex = index; primaryIndex = index;
} }
} }