diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java index 32654dc22..1cfa2c79d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java @@ -1246,10 +1246,12 @@ public class Key implements Comparable { mHintLabel = null; } else { // maybe also always null for comma and period keys - final boolean hintLabelAlwaysFromFirstLongPressKey = false; // todo (later): add the setting, and use it (store in params?) String hintLabel; - if (hintLabelAlwaysFromFirstLongPressKey) { + if (mKeyboardParams.mHintLabelFromFirstMoreKey) { hintLabel = mMoreKeys == null ? null : mMoreKeys[0].mLabel; + if (hintLabel != null && backgroundType == BACKGROUND_TYPE_FUNCTIONAL && mKeyboardParams.mId.isAlphabetKeyboard()) + // bad workaround for the ugly comma label on period key, todo: do it better when re-working moreKey stuff + hintLabel = null; } else { hintLabel = layoutMoreKeys == null ? null : KeySpecParser.getLabel(layoutMoreKeys[0]); // note that some entries may have been changed to other string or null // todo: this should be adjusted when re-working moreKey stuff... also KeySpecParser.getLabel may throw, which is bad when users do uncommon things diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.kt index f6b4a7307..1a307305d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardBuilder.kt @@ -67,11 +67,11 @@ open class KeyboardBuilder(protected val mContext: Context, return this // todo: further plan - // re-check the LayoutInfos, they should really to the right things! // some keyboard_layout_set have supportedScript that is enum synced with script id in ScriptUtils // that's one more reason for using language tags... // currently it's still read from xml outside the keyboard parser, but should still go to some other place // maybe use scriptUtils to determine, just make sure it's correct (also for hindi and serbian!) + // next release, and possibly don't continue working here for a while (should allow finding more regressions) // remove the old parser // then finally the spanish/german/swiss/nordic layouts can be removed and replaced by some hasExtraKeys parameter // also the eo check could then be removed diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardParams.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardParams.java index 90e43b7d7..cc8821f22 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardParams.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardParams.java @@ -89,6 +89,7 @@ public class KeyboardParams { @NonNull private final UniqueKeysCache mUniqueKeysCache; public boolean mAllowRedundantMoreKeys; + public final boolean mHintLabelFromFirstMoreKey = Settings.getInstance().getCurrent().mHintLabelFromFirstMoreKey; @NonNull public LocaleKeyTexts mLocaleKeyTexts; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/KeyboardParser.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/KeyboardParser.kt index 90937e10f..38e004cab 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/KeyboardParser.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/KeyboardParser.kt @@ -820,7 +820,7 @@ data class LayoutInfos( val allowRedundantMoreKeys: Boolean = true, // only false for nordic and serbian_qwertz // there is holo, default and null // null only for moreKeys keyboard - // currently read as part of readAttributes, and thus wrong with the new parser + // currently read as part of readAttributes, and thus wrong with the new parser (but we set it correctly in parser) val touchPositionCorrectionData: Int? = null, val hasZwnjKey: Boolean = false, val hasShiftKey: Boolean = true, diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java index 5b3f7c3c9..5bd9d40f2 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/PreferencesSettingsFragment.java @@ -67,6 +67,7 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { setupHistoryRetentionTimeSettings(); refreshEnablingsOfKeypressSoundAndVibrationAndHistRetentionSettings(); setLocalizedNumberRowVisibility(); + findPreference(Settings.PREF_HINT_LABEL_FROM_FIRST_MORE_KEY).setVisible(getSharedPreferences().getBoolean(Settings.PREF_SHOW_HINTS, false)); } @Override @@ -77,10 +78,13 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { @Override public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { refreshEnablingsOfKeypressSoundAndVibrationAndHistRetentionSettings(); - if (Settings.PREF_SHOW_POPUP_HINTS.equals(key)) + if (Settings.PREF_SHOW_POPUP_HINTS.equals(key) || Settings.PREF_HINT_LABEL_FROM_FIRST_MORE_KEY.equals(key)) mReloadKeyboard = true; if (key.equals(Settings.PREF_LOCALIZED_NUMBER_ROW)) KeyboardLayoutSet.onSystemLocaleChanged(); + if (Settings.PREF_SHOW_HINTS.equals(key)) { + findPreference(Settings.PREF_HINT_LABEL_FROM_FIRST_MORE_KEY).setVisible(prefs.getBoolean(Settings.PREF_SHOW_HINTS, false)); + } } @Override diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index 5083ab4b7..63b52cc26 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -112,6 +112,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_LOCALIZED_NUMBER_ROW = "pref_localized_number_row"; public static final String PREF_SHOW_HINTS = "pref_show_hints"; + public static final String PREF_HINT_LABEL_FROM_FIRST_MORE_KEY = "pref_hint_label_from_first_more_key"; public static final String PREF_SHOW_POPUP_HINTS = "pref_show_popup_hints"; public static final String PREF_SPACE_TO_CHANGE_LANG = "prefs_long_press_keyboard_to_change_lang"; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index e9955f417..67b8c179a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -66,6 +66,7 @@ public class SettingsValues { public final boolean mShowsNumberRow; public final boolean mLocalizedNumberRow; public final boolean mShowsHints; + public final boolean mHintLabelFromFirstMoreKey; public final boolean mShowsPopupHints; public final boolean mSpaceForLangChange; public final boolean mSpaceLanguageSlide; @@ -151,6 +152,7 @@ public class SettingsValues { mShowsNumberRow = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false); mLocalizedNumberRow = prefs.getBoolean(Settings.PREF_LOCALIZED_NUMBER_ROW, true); mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, true); + mHintLabelFromFirstMoreKey = mShowsHints && prefs.getBoolean(Settings.PREF_HINT_LABEL_FROM_FIRST_MORE_KEY, false); mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false); mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true); mSpaceLanguageSlide = prefs.getBoolean(Settings.PREF_SPACE_LANGUAGE_SLIDE, false); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ee7987c17..ca51672ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -238,6 +238,8 @@ Show key hints Show long-press hints + + Take hint label from first popup key Show functional hints diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml index ab298d581..d9cf4d5b4 100644 --- a/app/src/main/res/xml/prefs_screen_preferences.xml +++ b/app/src/main/res/xml/prefs_screen_preferences.xml @@ -17,6 +17,12 @@ android:defaultValue="true" android:persistent="true" /> + +