From a1dbfedc0b34f716f412e0b1706ff503451bac39 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Tue, 28 Nov 2023 18:30:04 +0100 Subject: [PATCH] fix issues with moreKeys in json layouts (e.g. azerty) --- app/src/main/assets/layouts/azerty.json | 2 +- .../keyboard_parser/floris/PopupSet.kt | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/assets/layouts/azerty.json b/app/src/main/assets/layouts/azerty.json index c5224ddf7..de9f70f6a 100644 --- a/app/src/main/assets/layouts/azerty.json +++ b/app/src/main/assets/layouts/azerty.json @@ -32,7 +32,7 @@ { "label": "n", "popup": { "main": { "label": "!" } } }, { "$": "shift_state_selector", "shiftedManual": { "label": "?" }, - "default": { "label": "'" }, "popup": { "main": { "label": "?" } } + "default": { "label": "'", "popup": { "main": { "label": "?" } } } } ] ] diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/floris/PopupSet.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/floris/PopupSet.kt index 6e69c8f05..20f6d92fd 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/floris/PopupSet.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/floris/PopupSet.kt @@ -33,19 +33,19 @@ open class PopupSet( val moreKeys = mutableListOf() // number + main + relevant in this order (label is later taken from first element in resulting array) moreKeys.addAll(params.mLocaleKeyTexts.getNumberMoreKeys(numberIndex)) - main?.getLabel(params)?.let { moreKeys.add(it) } - moreKeys.addAll(relevant.map { - val label = it.getLabel(params) - if (label == "$$$") { // currency key - if (params.mId.passwordInput()) "$" - else params.mLocaleKeyTexts.currencyKey.first - } else if (params.mId.mSubtype.isRtlSubtype) { - label.rtlLabel(params) - } else label - }) + main?.getLabel(params)?.let { moreKeys.add(transformLabel(it, params)) } + moreKeys.addAll(relevant.map { transformLabel(it.getLabel(params), params) }) return moreKeys.takeIf { it.isNotEmpty() }?.toTypedArray() } + private fun transformLabel(label: String, params: KeyboardParams): String = + if (label == "$$$") { // currency key + if (params.mId.passwordInput()) "$" + else params.mLocaleKeyTexts.currencyKey.first + } else if (params.mId.mSubtype.isRtlSubtype) { + label.rtlLabel(params) + } else label + private val popupKeys: PopupKeys by lazy { PopupKeys(null, listOfNotNull(main), relevant) }