aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-01-18 19:18:01 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-18 19:18:01 -0800
commit08ca36d0383a7d222d58709f55c497f3432dc229 (patch)
treea4b1c9c1c7a700b77948b725f517a3be6b5a100d /java/src
parent8b0febc6f0b6c2bd2a7b135fe1e1b7ff296727c1 (diff)
parentd01ae897d38d4e788e4f089e2b1d6d74655847c6 (diff)
downloadlatinime-08ca36d0383a7d222d58709f55c497f3432dc229.tar.gz
latinime-08ca36d0383a7d222d58709f55c497f3432dc229.tar.xz
latinime-08ca36d0383a7d222d58709f55c497f3432dc229.zip
Merge "Pressing shift could turn off shift state while auto capitalize mode" into honeycomb
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java50
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java11
3 files changed, 54 insertions, 11 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index ae1d302db..863421f18 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -330,6 +330,10 @@ public class Keyboard {
return isAlphaKeyboard() && mShiftState.isManualTemporaryUpperCase();
}
+ public boolean isManualTemporaryUpperCaseFromAuto() {
+ return isAlphaKeyboard() && mShiftState.isManualTemporaryUpperCaseFromAuto();
+ }
+
public KeyboardShiftState getKeyboardShiftState() {
return mShiftState;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
index 3e1eaf44e..d5412791d 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
@@ -24,26 +24,38 @@ public class KeyboardShiftState {
private static final int NORMAL = 0;
private static final int MANUAL_SHIFTED = 1;
- private static final int SHIFT_LOCKED = 2;
+ private static final int MANUAL_SHIFTED_FROM_AUTO = 2;
private static final int AUTO_SHIFTED = 3;
- private static final int SHIFT_LOCK_SHIFTED = 4;
+ private static final int SHIFT_LOCKED = 4;
+ private static final int SHIFT_LOCK_SHIFTED = 5;
private int mState = NORMAL;
public boolean setShifted(boolean newShiftState) {
final int oldState = mState;
if (newShiftState) {
- if (oldState == NORMAL || oldState == AUTO_SHIFTED) {
+ switch (oldState) {
+ case NORMAL:
mState = MANUAL_SHIFTED;
- } else if (oldState == SHIFT_LOCKED) {
+ break;
+ case AUTO_SHIFTED:
+ mState = MANUAL_SHIFTED_FROM_AUTO;
+ break;
+ case SHIFT_LOCKED:
mState = SHIFT_LOCK_SHIFTED;
+ break;
}
} else {
- if (oldState == MANUAL_SHIFTED || oldState == AUTO_SHIFTED) {
+ switch (oldState) {
+ case MANUAL_SHIFTED:
+ case MANUAL_SHIFTED_FROM_AUTO:
+ case AUTO_SHIFTED:
mState = NORMAL;
- } else if (oldState == SHIFT_LOCK_SHIFTED) {
+ break;
+ case SHIFT_LOCK_SHIFTED:
mState = SHIFT_LOCKED;
- }
+ break;
+ }
}
if (DEBUG)
Log.d(TAG, "setShifted(" + newShiftState + "): " + toString(oldState) + " > " + this);
@@ -53,11 +65,21 @@ public class KeyboardShiftState {
public void setShiftLocked(boolean newShiftLockState) {
final int oldState = mState;
if (newShiftLockState) {
- if (oldState == NORMAL || oldState == MANUAL_SHIFTED || oldState == AUTO_SHIFTED)
+ switch (oldState) {
+ case NORMAL:
+ case MANUAL_SHIFTED:
+ case MANUAL_SHIFTED_FROM_AUTO:
+ case AUTO_SHIFTED:
mState = SHIFT_LOCKED;
+ break;
+ }
} else {
- if (oldState == SHIFT_LOCKED || oldState == SHIFT_LOCK_SHIFTED)
+ switch (oldState) {
+ case SHIFT_LOCKED:
+ case SHIFT_LOCK_SHIFTED:
mState = NORMAL;
+ break;
+ }
}
if (DEBUG)
Log.d(TAG, "setShiftLocked(" + newShiftLockState + "): " + toString(oldState)
@@ -84,7 +106,12 @@ public class KeyboardShiftState {
}
public boolean isManualTemporaryUpperCase() {
- return mState == MANUAL_SHIFTED || mState == SHIFT_LOCK_SHIFTED;
+ return mState == MANUAL_SHIFTED || mState == MANUAL_SHIFTED_FROM_AUTO
+ || mState == SHIFT_LOCK_SHIFTED;
+ }
+
+ public boolean isManualTemporaryUpperCaseFromAuto() {
+ return mState == MANUAL_SHIFTED_FROM_AUTO;
}
@Override
@@ -96,8 +123,9 @@ public class KeyboardShiftState {
switch (state) {
case NORMAL: return "NORMAL";
case MANUAL_SHIFTED: return "MANUAL_SHIFTED";
- case SHIFT_LOCKED: return "SHIFT_LOCKED";
+ case MANUAL_SHIFTED_FROM_AUTO: return "MANUAL_SHIFTED_FROM_AUTO";
case AUTO_SHIFTED: return "AUTO_SHIFTED";
+ case SHIFT_LOCKED: return "SHIFT_LOCKED";
case SHIFT_LOCK_SHIFTED: return "SHIFT_LOCK_SHIFTED";
default: return "UKNOWN";
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 68d3ccd84..558de66a4 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -327,6 +327,13 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
return false;
}
+ private boolean isManualTemporaryUpperCaseFromAuto() {
+ LatinKeyboard latinKeyboard = getLatinKeyboard();
+ if (latinKeyboard != null)
+ return latinKeyboard.isManualTemporaryUpperCaseFromAuto();
+ return false;
+ }
+
private void setManualTemporaryUpperCase(boolean shifted) {
LatinKeyboard latinKeyboard = getLatinKeyboard();
if (latinKeyboard != null) {
@@ -482,6 +489,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
} else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted()) {
// Shift has been pressed without chording while shifted state.
toggleShift();
+ } else if (isManualTemporaryUpperCaseFromAuto() && shiftKeyState.isPressing()) {
+ // Shift has been pressed without chording while manual temporary upper case
+ // transited from automatic temporary upper case.
+ toggleShift();
}
}
shiftKeyState.onRelease();