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:
parent
d8f52a4f18
commit
8d165bb5d1
1 changed files with 2 additions and 1 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue