diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java index 6466784d..d222e06f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java @@ -146,7 +146,7 @@ public class SuggestionsBar { private void setStem(List newSuggestions, boolean containsGenerated) { - if (newSuggestions == null || newSuggestions.isEmpty()) { + if (newSuggestions == null || newSuggestions.size() < 2) { stem = ""; return; } @@ -156,6 +156,18 @@ public class SuggestionsBar { // Do not modify single letter + punctuation, such as "j'" or "l'". They look better as they are. stem = (stem.length() == 1 && newSuggestions.get(0).length() == 2 && !Character.isAlphabetic(newSuggestions.get(0).charAt(1))) ? "" : stem; + // If no other suggestion contains the stem, it makes no sense to separate them and display: + // "STEM" + "one-suggestion". It is only useful when there are multiple suggestions with the + // same stem. + boolean onlyOneContainsStem = true; + for (int i = 1; i < newSuggestions.size(); i++) { + if (newSuggestions.get(i).contains(stem)) { + onlyOneContainsStem = false; + break; + } + } + stem = onlyOneContainsStem ? "" : stem; + if (!stem.isEmpty() && !newSuggestions.contains(stem)) { suggestions.add(stem + STEM_SUFFIX); selectedIndex++; diff --git a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java index 229f1324..894f25a9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java @@ -18,11 +18,11 @@ public class Characters { )); final public static ArrayList CombiningPunctuation = new ArrayList<>(Arrays.asList( - ',', '-', '\'', ';', '!', '?', '.' + ',', '-', '\'', ':', ';', '!', '?', '.' )); final public static ArrayList CombiningPunctuationHebrew = new ArrayList<>(Arrays.asList( - ',' , '-', '\'', ';', '!', '?', '.', '"' + ',' , '-', '\'', ':', ';', '!', '?', '.', '"' )); final public static ArrayList PunctuationArabic = new ArrayList<>(Arrays.asList(