From 40221e0aea997110eb79818f0f499e90cb48e50d Mon Sep 17 00:00:00 2001 From: eranl <1707552+eranl@users.noreply.github.com> Date: Fri, 27 Feb 2026 00:52:41 +0200 Subject: [PATCH 1/2] Add emoji search ending logging --- .../keyboard/emoji/EmojiSearchActivity.kt | 14 ++++++++------ .../java/helium314/keyboard/latin/LatinIME.java | 17 ++++++++++++++--- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiSearchActivity.kt b/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiSearchActivity.kt index ddb8046e02..ed489dec9c 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiSearchActivity.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiSearchActivity.kt @@ -105,7 +105,7 @@ import helium314.keyboard.settings.CloseIcon import helium314.keyboard.settings.SearchIcon import kotlin.properties.Delegates -private const val TAG = "emoji-search" +const val TAG = "emoji-search" /** * This activity is displayed in a gap created for it above the keyboard and below the host app, and disables the host app. @@ -260,20 +260,22 @@ class EmojiSearchActivity : ComponentActivity() { } override fun onStop() { + Log.d(TAG, "search ending. Selected emoji: ${pressedKey?.let { getEmoji(it) }}. imeClosed: $imeClosed") val intent = Intent(this, LatinIME::class.java).setAction(EMOJI_SEARCH_DONE_ACTION) .putExtra(IME_CLOSED_KEY, imeClosed) pressedKey?.let { - intent.putExtra(EMOJI_KEY, if (it.code == KeyCode.MULTIPLE_CODE_POINTS) - it.getOutputText() - else - Character.toString(it.code)) - + intent.putExtra(EMOJI_KEY, getEmoji(it)) KeyboardSwitcher.getInstance().emojiPalettesView.addRecentKey(it) } startService(intent) super.onStop() } + private fun getEmoji(key: Key): String? = if (key.code == KeyCode.MULTIPLE_CODE_POINTS) + key.getOutputText() + else + Character.toString(key.code) + private fun init() { Log.d(TAG, "init start") @Suppress("DEPRECATION") diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 051371b759..7d3b46977f 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -43,6 +43,7 @@ import helium314.keyboard.keyboard.KeyboardActionListenerImpl; import helium314.keyboard.keyboard.emoji.EmojiPalettesView; import helium314.keyboard.keyboard.emoji.EmojiSearchActivity; +import helium314.keyboard.keyboard.emoji.EmojiSearchActivityKt; import helium314.keyboard.keyboard.internal.KeyboardIconsSet; import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode; import helium314.keyboard.latin.common.InsetsOutlineProvider; @@ -1712,20 +1713,22 @@ void launchSettings() { } public void launchEmojiSearch() { - Log.d("emoji-search", "before activity launch"); + Log.d(EmojiSearchActivityKt.TAG, "before activity launch"); startActivity(new Intent().setClass(this, EmojiSearchActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK)); } @Override public int onStartCommand(Intent intent, int flags, int startId) { + Log.d(EmojiSearchActivityKt.TAG, "after activity closing. isEmojiSearch: " + isEmojiSearch() + ". Intent: " + intent + + (intent != null ? ". imeClosed: " + isImeClosed(intent) + ". selected emoji: " + getSelectedEmoji(intent) : "")); if (intent != null && EmojiSearchActivity.EMOJI_SEARCH_DONE_ACTION.equals(intent.getAction()) && ! isEmojiSearch()) { - if (intent.getBooleanExtra(EmojiSearchActivity.IME_CLOSED_KEY, false)) { + if (isImeClosed(intent)) { requestHideSelf(0); } else { mHandler.postDelayed(() -> KeyboardSwitcher.getInstance().setEmojiKeyboard(), 100); if (intent.hasExtra(EmojiSearchActivity.EMOJI_KEY)) { - onTextInput(intent.getStringExtra(EmojiSearchActivity.EMOJI_KEY)); + onTextInput(getSelectedEmoji(intent)); } } @@ -1736,6 +1739,14 @@ public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } + private static boolean isImeClosed(Intent intent) { + return intent.getBooleanExtra(EmojiSearchActivity.IME_CLOSED_KEY, false); + } + + private static String getSelectedEmoji(Intent intent) { + return intent.getStringExtra(EmojiSearchActivity.EMOJI_KEY); + } + public boolean isEmojiSearch() { return getEmojiSearchActivityHeight() > 0; } From 5138c03b9f44d8c35273492ad1724a9726515b45 Mon Sep 17 00:00:00 2001 From: eranl <1707552+eranl@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:28:46 +0200 Subject: [PATCH 2/2] Delay saving the emoji --- .../main/java/helium314/keyboard/latin/LatinIME.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 7d3b46977f..d5e20f2727 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -1726,10 +1726,12 @@ public int onStartCommand(Intent intent, int flags, int startId) { if (isImeClosed(intent)) { requestHideSelf(0); } else { - mHandler.postDelayed(() -> KeyboardSwitcher.getInstance().setEmojiKeyboard(), 100); - if (intent.hasExtra(EmojiSearchActivity.EMOJI_KEY)) { - onTextInput(getSelectedEmoji(intent)); - } + mHandler.postDelayed(() -> { + if (intent.hasExtra(EmojiSearchActivity.EMOJI_KEY)) { + onTextInput(getSelectedEmoji(intent)); + } + KeyboardSwitcher.getInstance().setEmojiKeyboard(); + }, 100); } stopSelf(startId); // Allow the service to be destroyed when unbound