diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java index 7d124356..ee7d0402 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java @@ -261,7 +261,7 @@ public abstract class HotkeyHandler extends CommandHandler { return true; } - backward = isSystemRTL != backward; + backward = isLanguageRTL != backward; scrollSuggestions(backward); return true; @@ -279,6 +279,7 @@ public abstract class HotkeyHandler extends CommandHandler { suggestionOps.cancelDelayedAccept(); nextLang(); + detectRTL(); // for languages that do not have ABC or Predictive, make sure we remain in valid state if (!mInputMode.changeLanguage(mLanguage)) { @@ -288,6 +289,7 @@ public abstract class HotkeyHandler extends CommandHandler { getSuggestions(null); statusBar.setText(mInputMode); + suggestionOps.setRTL(isLanguageRTL); mainView.render(); if (!suggestionOps.isEmpty() || settings.isMainLayoutStealth()) { UI.toastShortSingle(this, mInputMode.getClass().getSimpleName(), mInputMode.toString()); diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TextEditingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TextEditingHandler.java index a9939fdd..2d435221 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TextEditingHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TextEditingHandler.java @@ -10,16 +10,24 @@ import io.github.sspanak.tt9.util.Clipboard; import io.github.sspanak.tt9.util.Ternary; abstract public class TextEditingHandler extends VoiceHandler { - protected boolean isSystemRTL; + protected boolean isLanguageRTL; @Override protected boolean onStart(InputConnection connection, EditorInfo field) { - isSystemRTL = LanguageKind.isRTL(LanguageCollection.getDefault()); + detectRTL(); + suggestionOps.setRTL(isLanguageRTL); return super.onStart(connection, field); } + protected void detectRTL() { + isLanguageRTL = LanguageKind.isRTL( + LanguageCollection.getLanguage(settings.getInputLanguage()) + ); + } + + protected boolean onNumber(int key, boolean hold, int repeat) { if (!shouldBeOff() && mainView.isTextEditingPaletteShown()) { onCommand(key); @@ -48,22 +56,22 @@ abstract public class TextEditingHandler extends VoiceHandler { } break; case 1: - textSelection.selectNextChar(!isSystemRTL); + textSelection.selectNextChar(!isLanguageRTL); break; case 2: textSelection.clear(); break; case 3: - textSelection.selectNextChar(isSystemRTL); + textSelection.selectNextChar(isLanguageRTL); break; case 4: - textSelection.selectNextWord(!isSystemRTL); + textSelection.selectNextWord(!isLanguageRTL); break; case 5: textSelection.selectAll(); break; case 6: - textSelection.selectNextWord(isSystemRTL); + textSelection.selectNextWord(isLanguageRTL); break; case 7: textSelection.cut(textField); diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java index ba7c270f..e1825fbd 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java @@ -29,6 +29,11 @@ public class SuggestionOps { } + public void setRTL(boolean yes) { + suggestionBar.setRTL(yes); + } + + public void setTextField(@Nullable TextField textField) { this.textField = textField; } 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 c117b4f2..7020c3d2 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 @@ -143,6 +143,11 @@ public class SuggestionsBar { } + public void setRTL(boolean yes) { + mView.setLayoutDirection(yes ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); + } + + public void setSuggestions(List newSuggestions, int initialSel, boolean containsGenerated) { ecoSetBackground(newSuggestions); diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index bd74ae75..73f02ee8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -151,17 +151,21 @@ - + + - + + + + + + + + + - - + + + - + +