diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
index f9ab36310..29dc5fa91 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
@@ -94,6 +94,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_BLOCK_POTENTIALLY_OFFENSIVE = "block_potentially_offensive";
public static final String PREF_LANGUAGE_SWITCH_KEY = "language_switch_key";
public static final String PREF_SHOW_EMOJI_KEY = "show_emoji_key";
+ public static final String PREF_VARIABLE_TOOLBAR_DIRECTION = "var_toolbar_direction";
public static final String PREF_ADDITIONAL_SUBTYPES = "additional_subtypes";
public static final String PREF_ENABLE_SPLIT_KEYBOARD = "split_keyboard";
public static final String PREF_SPLIT_SPACER_SCALE = "split_spacer_scale";
diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
index 52170b9bc..2549748f1 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
@@ -68,6 +68,7 @@ public class SettingsValues {
public final boolean mShowsPopupHints;
public final boolean mSpaceForLangChange;
public final boolean mShowsEmojiKey;
+ public final boolean mVarToolbarDirection;
public final boolean mUsePersonalizedDicts;
public final boolean mUseDoubleSpacePeriod;
public final boolean mBlockPotentiallyOffensive;
@@ -150,6 +151,7 @@ public SettingsValues(final Context context, final SharedPreferences prefs, fina
mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false);
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true);
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false);
+ mVarToolbarDirection = prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, true);
mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, true);
mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true)
&& inputAttributes.mIsGeneralTextInput;
diff --git a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java
index 33ba1d8a2..84e1a39c6 100644
--- a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java
+++ b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java
@@ -126,9 +126,7 @@ public StripVisibilityGroup(final View suggestionStripView,
showSuggestionsStrip();
}
- public void setLayoutDirection(final boolean isRtlLanguage) {
- final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
- : ViewCompat.LAYOUT_DIRECTION_LTR;
+ public void setLayoutDirection(final int layoutDirection) {
ViewCompat.setLayoutDirection(mSuggestionStripView, layoutDirection);
ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection);
}
@@ -265,8 +263,14 @@ private void updateKeys() {
}
public void setRtl(final boolean isRtlLanguage) {
- mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
- mRtl = isRtlLanguage ? -1 : 1;
+ final int layoutDirection;
+ if (!Settings.getInstance().getCurrent().mVarToolbarDirection)
+ layoutDirection = ViewCompat.LAYOUT_DIRECTION_LOCALE;
+ else{
+ layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL : ViewCompat.LAYOUT_DIRECTION_LTR;
+ mRtl = isRtlLanguage ? -1 : 1;
+ }
+ mStripVisibilityGroup.setLayoutDirection(layoutDirection);
}
public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index eb5acd0ec..c7eedde01 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -776,4 +776,8 @@ New dictionary:
None
Move Cursor
+
+ Variable toolbar direction
+
+ Reverse direction when a right-to-left keyboard subtype is selected
diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml
index bab93e664..e473f5895 100644
--- a/app/src/main/res/xml/prefs_screen_preferences.xml
+++ b/app/src/main/res/xml/prefs_screen_preferences.xml
@@ -98,6 +98,13 @@
android:key="toolbar_keys"
android:title="@string/toolbar_keys" />
+
+