mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
Fix a bug where autocorrection status would be wrong.
Change-Id: Ic220129dc59f585164dbf63591cd1c96de17fe6f
This commit is contained in:
parent
262d5bd9f9
commit
99b93d17d5
@ -1460,7 +1460,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
||||
return "";
|
||||
}
|
||||
final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
|
||||
return StringUtils.capitalizeFirstCharacter(locale.getLanguage(), locale);
|
||||
return StringUtils.capitalizeFirstCodePoint(locale.getLanguage(), locale);
|
||||
}
|
||||
|
||||
// Get InputMethodSubtype's middle display name in its locale.
|
||||
|
@ -41,7 +41,7 @@ public final class CapsModeUtils {
|
||||
if (WordComposer.CAPS_MODE_AUTO_SHIFT_LOCKED == capitalizeMode) {
|
||||
return s.toUpperCase(locale);
|
||||
} else if (WordComposer.CAPS_MODE_AUTO_SHIFTED == capitalizeMode) {
|
||||
return StringUtils.toTitleCase(s, locale);
|
||||
return StringUtils.capitalizeFirstCodePoint(s, locale);
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
|
@ -106,16 +106,17 @@ public final class StringUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static String capitalizeFirstCharacter(final String s, final Locale locale) {
|
||||
public static String capitalizeFirstCodePoint(final String s, final Locale locale) {
|
||||
if (s.length() <= 1) {
|
||||
return s.toUpperCase(locale);
|
||||
}
|
||||
// Please refer to the comment below in {@link #toTitleCase(String,Locale)}.
|
||||
// Please refer to the comment below in
|
||||
// {@link #capitalizeFirstAndDowncaseRest(String,Locale)} as this has the same shortcomings
|
||||
final int cutoff = s.offsetByCodePoints(0, 1);
|
||||
return s.substring(0, cutoff).toUpperCase(locale) + s.substring(cutoff);
|
||||
}
|
||||
|
||||
public static String toTitleCase(final String s, final Locale locale) {
|
||||
public static String capitalizeFirstAndDowncaseRest(final String s, final Locale locale) {
|
||||
if (s.length() <= 1) {
|
||||
return s.toUpperCase(locale);
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ public final class SubtypeLocale {
|
||||
final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
|
||||
displayName = locale.getDisplayName(displayLocale);
|
||||
}
|
||||
return StringUtils.capitalizeFirstCharacter(displayName, displayLocale);
|
||||
return StringUtils.capitalizeFirstCodePoint(displayName, displayLocale);
|
||||
}
|
||||
|
||||
// InputMethodSubtype's display name in its locale.
|
||||
@ -243,7 +243,7 @@ public final class SubtypeLocale {
|
||||
}
|
||||
}
|
||||
};
|
||||
return StringUtils.capitalizeFirstCharacter(
|
||||
return StringUtils.capitalizeFirstCodePoint(
|
||||
getSubtypeName.runInLocale(sResources, displayLocale), displayLocale);
|
||||
}
|
||||
|
||||
|
@ -394,7 +394,7 @@ public final class Suggest {
|
||||
if (isAllUpperCase) {
|
||||
sb.append(wordInfo.mWord.toUpperCase(locale));
|
||||
} else if (isFirstCharCapitalized) {
|
||||
sb.append(StringUtils.toTitleCase(wordInfo.mWord, locale));
|
||||
sb.append(StringUtils.capitalizeFirstCodePoint(wordInfo.mWord, locale));
|
||||
} else {
|
||||
sb.append(wordInfo.mWord);
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
|
||||
} else if (StringUtils.CAPITALIZE_FIRST == capitalizeType) {
|
||||
for (int i = 0; i < mSuggestions.size(); ++i) {
|
||||
// Likewise
|
||||
mSuggestions.set(i, StringUtils.toTitleCase(
|
||||
mSuggestions.set(i, StringUtils.capitalizeFirstCodePoint(
|
||||
mSuggestions.get(i).toString(), locale));
|
||||
}
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
|
||||
// If the lower case version is not in the dictionary, it's still possible
|
||||
// that we have an all-caps version of a word that needs to be capitalized
|
||||
// according to the dictionary. E.g. "GERMANS" only exists in the dictionary as "Germans".
|
||||
return dict.isValidWord(StringUtils.toTitleCase(lowerCaseText, mLocale));
|
||||
return dict.isValidWord(StringUtils.capitalizeFirstAndDowncaseRest(lowerCaseText, mLocale));
|
||||
}
|
||||
|
||||
// Note : this must be reentrant
|
||||
|
@ -113,7 +113,7 @@ public class SpacebarTextTests extends AndroidTestCase {
|
||||
final String subtypeName = SubtypeLocale.getSubtypeDisplayName(subtype);
|
||||
final Locale locale = SubtypeLocale.getSubtypeLocale(subtype);
|
||||
final String spacebarText = MainKeyboardView.getShortDisplayName(subtype);
|
||||
final String languageCode = StringUtils.capitalizeFirstCharacter(
|
||||
final String languageCode = StringUtils.capitalizeFirstCodePoint(
|
||||
locale.getLanguage(), locale);
|
||||
if (SubtypeLocale.isNoLanguage(subtype)) {
|
||||
assertEquals(subtypeName, "", spacebarText);
|
||||
|
@ -93,23 +93,43 @@ public class StringUtilsTests extends AndroidTestCase {
|
||||
StringUtils.removeFromCsvIfExists("key", "key1,key,key3,key,key5"));
|
||||
}
|
||||
|
||||
public void testToTitleCase() {
|
||||
|
||||
public void testCapitalizeFirstCodePoint() {
|
||||
assertEquals("SSaa",
|
||||
StringUtils.toTitleCase("ßaa", Locale.GERMAN));
|
||||
StringUtils.capitalizeFirstCodePoint("ßaa", Locale.GERMAN));
|
||||
assertEquals("Aßa",
|
||||
StringUtils.toTitleCase("aßa", Locale.GERMAN));
|
||||
StringUtils.capitalizeFirstCodePoint("aßa", Locale.GERMAN));
|
||||
assertEquals("Iab",
|
||||
StringUtils.toTitleCase("iab", Locale.ENGLISH));
|
||||
assertEquals("Camelcase",
|
||||
StringUtils.toTitleCase("cAmElCaSe", Locale.ENGLISH));
|
||||
StringUtils.capitalizeFirstCodePoint("iab", Locale.ENGLISH));
|
||||
assertEquals("cAmElCaSe",
|
||||
StringUtils.capitalizeFirstCodePoint("cAmElCaSe", Locale.ENGLISH));
|
||||
assertEquals("İab",
|
||||
StringUtils.toTitleCase("iab", new Locale("tr")));
|
||||
StringUtils.capitalizeFirstCodePoint("iab", new Locale("tr")));
|
||||
assertEquals("AİB",
|
||||
StringUtils.capitalizeFirstCodePoint("AİB", new Locale("tr")));
|
||||
assertEquals("A",
|
||||
StringUtils.capitalizeFirstCodePoint("a", Locale.ENGLISH));
|
||||
assertEquals("A",
|
||||
StringUtils.capitalizeFirstCodePoint("A", Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public void testCapitalizeFirstAndDowncaseRest() {
|
||||
assertEquals("SSaa",
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("ßaa", Locale.GERMAN));
|
||||
assertEquals("Aßa",
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("aßa", Locale.GERMAN));
|
||||
assertEquals("Iab",
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("iab", Locale.ENGLISH));
|
||||
assertEquals("Camelcase",
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("cAmElCaSe", Locale.ENGLISH));
|
||||
assertEquals("İab",
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("iab", new Locale("tr")));
|
||||
assertEquals("Aib",
|
||||
StringUtils.toTitleCase("AİB", new Locale("tr")));
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("AİB", new Locale("tr")));
|
||||
assertEquals("A",
|
||||
StringUtils.toTitleCase("a", Locale.ENGLISH));
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("a", Locale.ENGLISH));
|
||||
assertEquals("A",
|
||||
StringUtils.toTitleCase("A", Locale.ENGLISH));
|
||||
StringUtils.capitalizeFirstAndDowncaseRest("A", Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public void testGetCapitalizationType() {
|
||||
|
Loading…
Reference in New Issue
Block a user