Make toolbar direction for RTL layouts adjustable (#574)

This commit is contained in:
codokie 2024-03-27 07:04:59 +02:00 committed by GitHub
parent 613f2e80a3
commit fb9008e9fe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 23 additions and 5 deletions

View file

@ -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_BLOCK_POTENTIALLY_OFFENSIVE = "block_potentially_offensive";
public static final String PREF_LANGUAGE_SWITCH_KEY = "language_switch_key"; 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_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_ADDITIONAL_SUBTYPES = "additional_subtypes";
public static final String PREF_ENABLE_SPLIT_KEYBOARD = "split_keyboard"; public static final String PREF_ENABLE_SPLIT_KEYBOARD = "split_keyboard";
public static final String PREF_SPLIT_SPACER_SCALE = "split_spacer_scale"; public static final String PREF_SPLIT_SPACER_SCALE = "split_spacer_scale";

View file

@ -68,6 +68,7 @@ public class SettingsValues {
public final boolean mShowsPopupHints; public final boolean mShowsPopupHints;
public final boolean mSpaceForLangChange; public final boolean mSpaceForLangChange;
public final boolean mShowsEmojiKey; public final boolean mShowsEmojiKey;
public final boolean mVarToolbarDirection;
public final boolean mUsePersonalizedDicts; public final boolean mUsePersonalizedDicts;
public final boolean mUseDoubleSpacePeriod; public final boolean mUseDoubleSpacePeriod;
public final boolean mBlockPotentiallyOffensive; public final boolean mBlockPotentiallyOffensive;
@ -150,6 +151,7 @@ public class SettingsValues {
mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false); mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false);
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true); mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true);
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false); 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); mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, true);
mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true) mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true)
&& inputAttributes.mIsGeneralTextInput; && inputAttributes.mIsGeneralTextInput;

View file

@ -126,9 +126,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
showSuggestionsStrip(); showSuggestionsStrip();
} }
public void setLayoutDirection(final boolean isRtlLanguage) { public void setLayoutDirection(final int layoutDirection) {
final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
: ViewCompat.LAYOUT_DIRECTION_LTR;
ViewCompat.setLayoutDirection(mSuggestionStripView, layoutDirection); ViewCompat.setLayoutDirection(mSuggestionStripView, layoutDirection);
ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection); ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection);
} }
@ -265,9 +263,15 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
} }
public void setRtl(final boolean isRtlLanguage) { public void setRtl(final boolean isRtlLanguage) {
mStripVisibilityGroup.setLayoutDirection(isRtlLanguage); 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; mRtl = isRtlLanguage ? -1 : 1;
} }
mStripVisibilityGroup.setLayoutDirection(layoutDirection);
}
public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) { public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
clear(); clear();

View file

@ -776,4 +776,8 @@ New dictionary:
<string name="action_none">None</string> <string name="action_none">None</string>
<!-- Option to move the cursor when swiping the spacebar --> <!-- Option to move the cursor when swiping the spacebar -->
<string name="space_swipe_move_cursor_entry">Move Cursor</string> <string name="space_swipe_move_cursor_entry">Move Cursor</string>
<!-- Title of the settings for variable toolbar direction -->
<string name="var_toolbar_direction">Variable toolbar direction</string>
<!-- Description of the variable toolbar direction setting -->
<string name="var_toolbar_direction_summary">Reverse direction when a right-to-left keyboard subtype is selected</string>
</resources> </resources>

View file

@ -98,6 +98,13 @@
android:key="toolbar_keys" android:key="toolbar_keys"
android:title="@string/toolbar_keys" /> android:title="@string/toolbar_keys" />
<SwitchPreference
android:key="var_toolbar_direction"
android:title="@string/var_toolbar_direction"
android:summary="@string/var_toolbar_direction_summary"
android:defaultValue="true"
android:persistent="true" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/settings_category_clipboard_history"> <PreferenceCategory android:title="@string/settings_category_clipboard_history">