diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java index d5d14c92e..77258b2d6 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java @@ -193,7 +193,8 @@ public class KeyboardView extends View { invalidateAllKeys(); requestLayout(); mFontSizeMultiplier = mKeyboard.mId.isEmojiKeyboard() - ? Settings.getValues().mFontSizeMultiplierEmoji + // In the case of EmojiKeyFit, the size of emojis is taken care of by the size of the keys + ? (Settings.getValues().mEmojiKeyFit? 1 : Settings.getValues().mFontSizeMultiplierEmoji) : Settings.getValues().mFontSizeMultiplier; } diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/EmojiParser.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/EmojiParser.kt index 165b506fb..4e9db5422 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/EmojiParser.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/EmojiParser.kt @@ -44,11 +44,17 @@ class EmojiParser(private val params: KeyboardParams, private val context: Conte // this is a bit long, but ensures that emoji size stays the same, independent of these settings // we also ignore side padding for key width, and prefer fewer keys per row over narrower keys val defaultKeyWidth = ResourceUtils.getDefaultKeyboardWidth(context) * params.mDefaultKeyWidth - val keyWidth = defaultKeyWidth * sqrt(Settings.getValues().mKeyboardHeightScale) + var keyWidth = defaultKeyWidth * sqrt(Settings.getValues().mKeyboardHeightScale) val defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(context.resources, false) val defaultBottomPadding = context.resources.getFraction(R.fraction.config_keyboard_bottom_padding_holo, defaultKeyboardHeight, defaultKeyboardHeight) val emojiKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(context.resources, false) * 0.75f + params.mVerticalGap - defaultBottomPadding - context.resources.getDimensionPixelSize(R.dimen.config_emoji_category_page_id_height) - val keyHeight = emojiKeyboardHeight * params.mDefaultRowHeight * Settings.getValues().mKeyboardHeightScale // still apply height scale to key + var keyHeight = emojiKeyboardHeight * params.mDefaultRowHeight * Settings.getValues().mKeyboardHeightScale // still apply height scale to key + + if (Settings.getValues().mEmojiKeyFit) { + keyWidth *= Settings.getValues().mFontSizeMultiplierEmoji + keyHeight *= Settings.getValues().mFontSizeMultiplierEmoji + } + emojiArray.forEachIndexed { i, codeArraySpec -> val keyParams = parseEmojiKey(codeArraySpec, popupEmojisArray?.get(i)?.takeIf { it.isNotEmpty() }) ?: return@forEachIndexed @@ -102,4 +108,4 @@ class EmojiParser(private val params: KeyboardParams, private val context: Conte } } -const val EMOJI_HINT_LABEL = "◥" \ No newline at end of file +const val EMOJI_HINT_LABEL = "◥" diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt index 377e19899..4a38c6fc8 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt @@ -89,6 +89,7 @@ object Defaults { const val PREF_SIDE_PADDING_SCALE_LANDSCAPE = 0f const val PREF_FONT_SCALE = SettingsValues.DEFAULT_SIZE_SCALE const val PREF_EMOJI_FONT_SCALE = SettingsValues.DEFAULT_SIZE_SCALE + const val PREF_EMOJI_KEY_FIT = true const val PREF_SPACE_HORIZONTAL_SWIPE = "move_cursor" const val PREF_SPACE_VERTICAL_SWIPE = "none" const val PREF_DELETE_SWIPE = true diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 0f9c21ed8..b70d9d840 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -95,6 +95,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_SIDE_PADDING_SCALE_LANDSCAPE = "side_padding_scale_landscape"; public static final String PREF_FONT_SCALE = "font_scale"; public static final String PREF_EMOJI_FONT_SCALE = "emoji_font_scale"; + public static final String PREF_EMOJI_KEY_FIT = "emoji_key_fit"; public static final String PREF_SPACE_HORIZONTAL_SWIPE = "horizontal_space_swipe"; public static final String PREF_SPACE_VERTICAL_SWIPE = "vertical_space_swipe"; public static final String PREF_DELETE_SWIPE = "delete_swipe"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 9fe0a3725..df015aa84 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -124,6 +124,7 @@ public class SettingsValues { public final String mSpaceBarText; public final float mFontSizeMultiplier; public final float mFontSizeMultiplierEmoji; + public final boolean mEmojiKeyFit; // From the input box @NonNull @@ -289,6 +290,7 @@ public class SettingsValues { mEmojiMaxSdk = prefs.getInt(Settings.PREF_EMOJI_MAX_SDK, Defaults.PREF_EMOJI_MAX_SDK); mFontSizeMultiplier = prefs.getFloat(Settings.PREF_FONT_SCALE, Defaults.PREF_FONT_SCALE); mFontSizeMultiplierEmoji = prefs.getFloat(Settings.PREF_EMOJI_FONT_SCALE, Defaults.PREF_EMOJI_FONT_SCALE); + mEmojiKeyFit = prefs.getBoolean(Settings.PREF_EMOJI_KEY_FIT, Defaults.PREF_EMOJI_KEY_FIT); } public boolean isApplicationSpecifiedCompletionsOn() { diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt index 2a53c22c0..3b16a48d7 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt @@ -84,6 +84,7 @@ fun AppearanceScreen( SettingsWithoutKey.CUSTOM_FONT, Settings.PREF_FONT_SCALE, Settings.PREF_EMOJI_FONT_SCALE, + Settings.PREF_EMOJI_KEY_FIT, ) SearchSettingsScreen( onClickBack = onClickBack, @@ -289,6 +290,9 @@ fun createAppearanceSettings(context: Context) = listOf( description = { "${(100 * it).toInt()}%" } ) { KeyboardSwitcher.getInstance().setThemeNeedsReload() } }, + Setting(context, Settings.PREF_EMOJI_KEY_FIT, R.string.prefs_emoji_key_fit) { + SwitchPreference(it, Defaults.PREF_EMOJI_KEY_FIT) { KeyboardSwitcher.getInstance().setThemeNeedsReload() } + }, ) @Preview diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a0f317a99..710fe1f19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -348,6 +348,8 @@ Keyboard font scale Emoji view font scale + + Scale emoji key size with font size Custom text on space bar