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" /> + +