From df6af1f07eb54a81830d4c571f61a26b60d3e3f2 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Fri, 31 May 2024 12:10:46 +0200 Subject: [PATCH] fix broken popup key width in number layouts --- .../helium314/keyboard/keyboard/PopupKeysKeyboard.java | 8 ++++---- .../keyboard/keyboard/internal/KeyboardParams.java | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/PopupKeysKeyboard.java b/app/src/main/java/helium314/keyboard/keyboard/PopupKeysKeyboard.java index c3c6251f..11340437 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/PopupKeysKeyboard.java +++ b/app/src/main/java/helium314/keyboard/keyboard/PopupKeysKeyboard.java @@ -23,7 +23,7 @@ public final class PopupKeysKeyboard extends Keyboard { PopupKeysKeyboard(final PopupKeysKeyboardParams params) { super(params); - mDefaultKeyCoordX = params.getDefaultKeyCoordX() + params.mDefaultAbsoluteKeyWidth / 2; + mDefaultKeyCoordX = params.getDefaultKeyCoordX() + params.mAbsolutePopupKeyWidth / 2; } public int getDefaultCoordX() { @@ -287,8 +287,8 @@ public final class PopupKeysKeyboard extends Keyboard { final float padding = context.getResources().getDimension( R.dimen.config_popup_keys_keyboard_key_horizontal_padding) + (key.hasLabelsInPopupKeys() - ? mParams.mDefaultAbsoluteKeyWidth * LABEL_PADDING_RATIO : 0.0f); - keyWidth = getMaxKeyWidth(key, mParams.mDefaultAbsoluteKeyWidth, padding, paintToMeasure); + ? mParams.mAbsolutePopupKeyWidth * LABEL_PADDING_RATIO : 0.0f); + keyWidth = getMaxKeyWidth(key, mParams.mAbsolutePopupKeyWidth, padding, paintToMeasure); rowHeight = keyboard.mMostCommonKeyHeight; } final int dividerWidth; @@ -342,7 +342,7 @@ public final class PopupKeysKeyboard extends Keyboard { // left of the default position. if (params.mDividerWidth > 0 && pos != 0) { final int dividerX = (pos > 0) ? x - params.mDividerWidth - : x + params.mDefaultAbsoluteKeyWidth; + : x + params.mAbsolutePopupKeyWidth; final Key divider = new PopupKeyDivider( params, dividerX, y, params.mDividerWidth, params.mDefaultAbsoluteRowHeight); params.onAddKey(divider); 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 9d39c79d..7f0fbe12 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java @@ -66,6 +66,8 @@ public class KeyboardParams { public int mPopupKeysTemplate; public int mMaxPopupKeysKeyboardColumn; + // popup key width is separate from mDefaultAbsoluteKeyWidth because it should not depend on alpha or number layout + public int mAbsolutePopupKeyWidth; public int GRID_WIDTH; public int GRID_HEIGHT; @@ -225,11 +227,11 @@ public class KeyboardParams { mBaseWidth = mOccupiedWidth - mLeftPadding - mRightPadding; final float defaultKeyWidthFactor = context.getResources().getInteger(R.integer.config_screen_metrics) > 2 ? 0.9f : 1f; - mDefaultKeyWidth = mId.isNumberLayout() - ? 0.17f - : keyAttr.getFraction(R.styleable.Keyboard_Key_keyWidth, + final float alphaSymbolKeyWidth = keyAttr.getFraction(R.styleable.Keyboard_Key_keyWidth, 1, 1, defaultKeyWidthFactor / DEFAULT_KEYBOARD_COLUMNS); + mDefaultKeyWidth = mId.isNumberLayout() ? 0.17f : alphaSymbolKeyWidth; mDefaultAbsoluteKeyWidth = (int) (mDefaultKeyWidth * mBaseWidth); + mAbsolutePopupKeyWidth = (int) (alphaSymbolKeyWidth * mBaseWidth); // todo: maybe settings should not be accessed from here? if (Settings.getInstance().getCurrent().mNarrowKeyGaps) {