From 3cf9d4c87ebcfdaa57a8b8e1e614f3887bea8958 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 5 Jan 2025 22:46:40 +0100 Subject: [PATCH] don't set tablet extra keys for custom layouts fixes #1180 --- .../helium314/keyboard/keyboard/internal/KeyboardParams.java | 2 ++ .../keyboard/internal/keyboard_parser/KeyboardParser.kt | 5 +---- .../keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt | 1 - .../keyboard/internal/keyboard_parser/floris/TextKeyData.kt | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java index 2a1db5c83..fe456eb15 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java @@ -91,6 +91,7 @@ public class KeyboardParams { public boolean mAllowRedundantPopupKeys; @NonNull public LocaleKeyboardInfos mLocaleKeyboardInfos; + public boolean setTabletExtraKeys; public int mMostCommonKeyHeight = 0; public int mMostCommonKeyWidth = 0; @@ -284,5 +285,6 @@ public class KeyboardParams { keyAttr.recycle(); keyboardAttr.recycle(); } + setTabletExtraKeys = Settings.getInstance().isTablet() && !mId.mSubtype.isCustom(); } } diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt index 1b0a870fa..5f3286767 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt @@ -108,11 +108,8 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co val functionalKeys = mutableListOf, List>>() val baseKeyParams = baseKeys.mapIndexed { i, it -> - val row: List = if (params.mId.isAlphaOrSymbolKeyboard && i == baseKeys.lastIndex - 1 && Settings.getInstance().isTablet) { + val row: List = if (params.mId.isAlphaOrSymbolKeyboard && i == baseKeys.lastIndex - 1 && params.setTabletExtraKeys) { // add bottom row extra keys - // todo (later): this can make very customized layouts look awkward - // decide when to (not) add it - // when not adding, consider that punctuation popup keys should not remove those keys! val tabletExtraKeys = params.mLocaleKeyboardInfos.getTabletExtraKeys(params.mId.mElementId) tabletExtraKeys.first + it + tabletExtraKeys.second } else { diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt index b71df6841..bd7f80645 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt @@ -86,7 +86,6 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) { } /** Pair(extraKeysLeft, extraKeysRight) */ - // todo: they should be optional, or will unexpectedly appear on custom layouts fun getTabletExtraKeys(elementId: Int): Pair, List> { val flags = Key.LABEL_FLAGS_FONT_DEFAULT return when (elementId) { diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt index 6688797df..0388fc6e9 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt @@ -141,7 +141,7 @@ sealed interface KeyData : AbstractKeyData { for (i in popupKeys.indices) popupKeys[i] = popupKeys[i].rtlLabel(params) // for parentheses } - if (Settings.getInstance().isTablet && popupKeys.contains("!") && popupKeys.contains("?")) { + if (params.setTabletExtraKeys && popupKeys.contains("!") && popupKeys.contains("?")) { // remove ! and ? keys and reduce number in autoColumnOrder // this makes use of removal of empty popupKeys in PopupKeySpec.insertAdditionalPopupKeys popupKeys[popupKeys.indexOf("!")] = ""