Reset old keyboard state before switching to new keyboard (DO NOT MERGE)

Bug: 3322158
Change-Id: I8030202f9b1b491bd9b7acf5ce14b6d8f14db978
main
Tadashi G. Takaoka 2011-01-11 18:50:40 +09:00
parent 4246861c60
commit 07a0fd0f51
2 changed files with 14 additions and 8 deletions

View File

@ -67,7 +67,7 @@ public class LatinKeyboard extends Keyboard {
private final int NUMBER_HINT_COUNT = 10; private final int NUMBER_HINT_COUNT = 10;
private Key[] mNumberHintKeys; private Key[] mNumberHintKeys;
private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT]; private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT];
private int mSpaceKeyIndex = -1; private final int[] mSpaceKeyIndexArray;
private int mSpaceDragStartX; private int mSpaceDragStartX;
private int mSpaceDragLastDiff; private int mSpaceDragLastDiff;
private Locale mLocale; private Locale mLocale;
@ -144,7 +144,8 @@ public class LatinKeyboard extends Keyboard {
R.dimen.spacebar_vertical_correction); R.dimen.spacebar_vertical_correction);
mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
|| xmlLayoutResId == R.xml.kbd_qwerty_black; || xmlLayoutResId == R.xml.kbd_qwerty_black;
mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE); // The index of space key is available only after Keyboard constructor has finished.
mSpaceKeyIndexArray = new int[] { indexOf(LatinIME.KEYCODE_SPACE) };
initializeNumberHintResources(context); initializeNumberHintResources(context);
// TODO remove this initialization after cleanup // TODO remove this initialization after cleanup
mVerticalGap = super.getVerticalGap(); mVerticalGap = super.getVerticalGap();
@ -795,7 +796,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)),

View File

@ -76,14 +76,19 @@ public class LatinKeyboardView extends LatinKeyboardBaseView {
} }
@Override @Override
public void setKeyboard(Keyboard k) { public void setKeyboard(Keyboard newKeyboard) {
super.setKeyboard(k); final Keyboard oldKeyboard = getKeyboard();
if (oldKeyboard instanceof LatinKeyboard) {
// Reset old keyboard state before switching to new keyboard.
((LatinKeyboard)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;
setKeyboardLocal(k); setKeyboardLocal(newKeyboard);
} }
@Override @Override