aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-01-11 18:50:40 +0900
committerTadashi G. Takaoka <takaoka@google.com>2011-01-12 14:13:39 +0900
commit07a0fd0f5100a0cee978ba07751d63595c9d27ac (patch)
treeccbb36e7eded4c6741ca82e96347bde754e59eba /java/src
parent4246861c60e6ea5a719991c8bc1c0c9461eb44d7 (diff)
downloadlatinime-07a0fd0f5100a0cee978ba07751d63595c9d27ac.tar.gz
latinime-07a0fd0f5100a0cee978ba07751d63595c9d27ac.tar.xz
latinime-07a0fd0f5100a0cee978ba07751d63595c9d27ac.zip
Reset old keyboard state before switching to new keyboard (DO NOT MERGE)
Bug: 3322158 Change-Id: I8030202f9b1b491bd9b7acf5ce14b6d8f14db978
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboard.java7
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardView.java15
2 files changed, 14 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index 45a4a9508..fbba55bad 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -67,7 +67,7 @@ public class LatinKeyboard extends Keyboard {
private final int NUMBER_HINT_COUNT = 10;
private Key[] mNumberHintKeys;
private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT];
- private int mSpaceKeyIndex = -1;
+ private final int[] mSpaceKeyIndexArray;
private int mSpaceDragStartX;
private int mSpaceDragLastDiff;
private Locale mLocale;
@@ -144,7 +144,8 @@ public class LatinKeyboard extends Keyboard {
R.dimen.spacebar_vertical_correction);
mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
|| 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);
// TODO remove this initialization after cleanup
mVerticalGap = super.getVerticalGap();
@@ -795,7 +796,7 @@ public class LatinKeyboard extends Keyboard {
@Override
public int[] getNearestKeys(int x, int y) {
if (mCurrentlyInSpace) {
- return new int[] { mSpaceKeyIndex };
+ return mSpaceKeyIndexArray;
} else {
// Avoid dead pixels at edges of the keyboard
return super.getNearestKeys(Math.max(0, Math.min(x, getMinWidth() - 1)),
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 22d39f7aa..a5476e457 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -76,14 +76,19 @@ public class LatinKeyboardView extends LatinKeyboardBaseView {
}
@Override
- public void setKeyboard(Keyboard k) {
- super.setKeyboard(k);
+ public void setKeyboard(Keyboard newKeyboard) {
+ 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
- mJumpThresholdSquare = k.getMinWidth() / 7;
+ mJumpThresholdSquare = newKeyboard.getMinWidth() / 7;
mJumpThresholdSquare *= mJumpThresholdSquare;
// Assuming there are 4 rows, this is the coordinate of the last row
- mLastRowY = (k.getHeight() * 3) / 4;
- setKeyboardLocal(k);
+ mLastRowY = (newKeyboard.getHeight() * 3) / 4;
+ setKeyboardLocal(newKeyboard);
}
@Override