Reset old keyboard state before switching to new keyboard
This change is ported version of I8030202f from Gingerbread. Bug: 3322158 Change-Id: Idc1ef7f174b50b0478ba53b14427485275e97748main
parent
2faf0a176c
commit
ee66e6fa90
|
@ -48,7 +48,7 @@ public class LatinKeyboard extends Keyboard {
|
||||||
private final Drawable mButtonArrowLeftIcon;
|
private final Drawable mButtonArrowLeftIcon;
|
||||||
private final Drawable mButtonArrowRightIcon;
|
private final Drawable mButtonArrowRightIcon;
|
||||||
private final int mSpaceBarTextShadowColor;
|
private final int mSpaceBarTextShadowColor;
|
||||||
private int mSpaceKeyIndex = -1;
|
private final int[] mSpaceKeyIndexArray;
|
||||||
private int mSpaceDragStartX;
|
private int mSpaceDragStartX;
|
||||||
private int mSpaceDragLastDiff;
|
private int mSpaceDragLastDiff;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
@ -92,7 +92,8 @@ public class LatinKeyboard extends Keyboard {
|
||||||
mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
|
mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
|
||||||
sSpacebarVerticalCorrection = res.getDimensionPixelOffset(
|
sSpacebarVerticalCorrection = res.getDimensionPixelOffset(
|
||||||
R.dimen.spacebar_vertical_correction);
|
R.dimen.spacebar_vertical_correction);
|
||||||
mSpaceKeyIndex = indexOf(CODE_SPACE);
|
// The index of space key is available only after Keyboard constructor has finished.
|
||||||
|
mSpaceKeyIndexArray = new int[] { indexOf(CODE_SPACE) };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -418,7 +419,7 @@ public class LatinKeyboard extends Keyboard {
|
||||||
@Override
|
@Override
|
||||||
public int[] getNearestKeys(int x, int y) {
|
public int[] getNearestKeys(int x, int y) {
|
||||||
if (mCurrentlyInSpace) {
|
if (mCurrentlyInSpace) {
|
||||||
return new int[] { mSpaceKeyIndex };
|
return mSpaceKeyIndexArray;
|
||||||
} else {
|
} else {
|
||||||
// Avoid dead pixels at edges of the keyboard
|
// Avoid dead pixels at edges of the keyboard
|
||||||
return super.getNearestKeys(Math.max(0, Math.min(x, getMinWidth() - 1)),
|
return super.getNearestKeys(Math.max(0, Math.min(x, getMinWidth() - 1)),
|
||||||
|
|
|
@ -62,13 +62,18 @@ public class LatinKeyboardView extends KeyboardView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLatinKeyboard(LatinKeyboard k) {
|
public void setLatinKeyboard(LatinKeyboard newKeyboard) {
|
||||||
super.setKeyboard(k);
|
final LatinKeyboard oldKeyboard = getLatinKeyboard();
|
||||||
|
if (oldKeyboard != null) {
|
||||||
|
// Reset old keyboard state before switching to new keyboard.
|
||||||
|
oldKeyboard.keyReleased();
|
||||||
|
}
|
||||||
|
super.setKeyboard(newKeyboard);
|
||||||
// One-seventh of the keyboard width seems like a reasonable threshold
|
// One-seventh of the keyboard width seems like a reasonable threshold
|
||||||
mJumpThresholdSquare = k.getMinWidth() / 7;
|
mJumpThresholdSquare = newKeyboard.getMinWidth() / 7;
|
||||||
mJumpThresholdSquare *= mJumpThresholdSquare;
|
mJumpThresholdSquare *= mJumpThresholdSquare;
|
||||||
// Assuming there are 4 rows, this is the coordinate of the last row
|
// Assuming there are 4 rows, this is the coordinate of the last row
|
||||||
mLastRowY = (k.getHeight() * 3) / 4;
|
mLastRowY = (newKeyboard.getHeight() * 3) / 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LatinKeyboard getLatinKeyboard() {
|
public LatinKeyboard getLatinKeyboard() {
|
||||||
|
|
Loading…
Reference in New Issue