Fix automatic temporary upper case mode shift key graphics
Bug: 5802387
Change-Id: I4f59fb2f971c543748ed32b37af528767a0549e4
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index d9d28f1..3540577 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -205,16 +205,21 @@
return mShiftState.isShiftLocked();
}
+ private void setShiftKeyGraphics(boolean newShiftState) {
+ if (mShiftState.isShiftLocked()) {
+ return;
+ }
+ for (final Key key : mShiftKeys) {
+ final int attrId = newShiftState
+ ? R.styleable.Keyboard_iconShiftKeyShifted
+ : R.styleable.Keyboard_iconShiftKey;
+ key.setIcon(mIconsSet.getIconByAttrId(attrId));
+ }
+ }
+
// TODO: Remove this method.
void setShifted(boolean newShiftState) {
- if (!mShiftState.isShiftLocked()) {
- for (final Key key : mShiftKeys) {
- final int attrId = newShiftState
- ? R.styleable.Keyboard_iconShiftKeyShifted
- : R.styleable.Keyboard_iconShiftKey;
- key.setIcon(mIconsSet.getIconByAttrId(attrId));
- }
- }
+ setShiftKeyGraphics(newShiftState);
mShiftState.setShifted(newShiftState);
}
@@ -225,6 +230,7 @@
// TODO: Remove this method
void setAutomaticTemporaryUpperCase() {
+ setShiftKeyGraphics(true);
mShiftState.setAutomaticTemporaryUpperCase();
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index e839fe7..fa073b6 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -134,6 +134,7 @@
if (mainKeyboardId.isPhoneKeyboard()) {
mState.onToggleAlphabetAndSymbols();
}
+ updateShiftState();
}
public void saveKeyboardState() {
@@ -164,7 +165,6 @@
mKeyboardView.updateSpacebar(0.0f,
mSubtypeSwitcher.needsToDisplayLanguage(keyboard.mId.mLocale));
mKeyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
- updateShiftState();
final boolean localeChanged = (oldKeyboard == null)
|| !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
mInputMethodService.mHandler.startDisplayLanguageOnSpacebar(localeChanged);