diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 573ec68b7..4ec184334 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -275,10 +275,11 @@
-
-
-
+
+
+
+
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 04bd80d9e..f4c7ad46b 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -94,7 +94,7 @@
latin:styleName="defaultEnterKeyStyle"
latin:code="!code/key_enter"
latin:keyIcon="iconReturnKey"
- latin:keyLabelFlags="autoXScale|preserveCase"
+ latin:keyLabelFlags="autoXScale|preserveCase|followKeyLabelRatio"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional"
latin:parentStyle="navigateMoreKeysStyle" />
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index d796b92c1..16cfa8492 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -26,7 +26,7 @@
latin:keyActionFlags="noKeyPreview" />
1
- && (mLabelFlags & (LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO
- | LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO)) == 0) {
- return label;
- } else if ((mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO) != 0) {
- return hintLabel;
- } else if ((mLabelFlags & LABEL_FLAGS_LARGE_LETTER) != 0) {
+ switch (mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_RATIO_MASK) {
+ case LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO:
return largeLetter;
- } else {
+ case LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO:
return letter;
+ case LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO:
+ return label;
+ case LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO:
+ return hintLabel;
+ default: // No follow key ratio flag specified.
+ return StringUtils.codePointCount(mLabel) == 1 ? letter : label;
}
}
@@ -563,6 +566,12 @@ public class Key {
return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_HAS_LABELS) != 0;
}
+ public int getMoreKeyLabelFlags() {
+ return hasLabelsInMoreKeys()
+ ? LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO
+ : LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+ }
+
public boolean needsDividersInMoreKeys() {
return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_NEEDS_DIVIDERS) != 0;
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index f8682d8ca..7154086e2 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -332,10 +332,7 @@ public class MoreKeysKeyboard extends Keyboard {
@Override
public MoreKeysKeyboard build() {
final MoreKeysKeyboardParams params = mParams;
- // moreKeyFlags == 0 means that the rendered text size will be determined by its
- // label's code point count.
- final int moreKeyFlags = mParentKey.hasLabelsInMoreKeys() ? 0
- : Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+ final int moreKeyFlags = mParentKey.getMoreKeyLabelFlags();
final MoreKeySpec[] moreKeys = mParentKey.mMoreKeys;
for (int n = 0; n < moreKeys.length; n++) {
final MoreKeySpec moreKeySpec = moreKeys[n];