From 6c63a1c8b64e973a5bf96c3e96f751c4ecaa83ae Mon Sep 17 00:00:00 2001 From: kleidis <179024853+kleidiss@users.noreply.github.com> Date: Fri, 20 Jun 2025 00:48:18 +0200 Subject: [PATCH] android: Fix hotkey presses opening nav drawer even after being bound (#1122) * android: Fix hotkey presses opening nav drawer even after being bound * Removed unnecessary return --------- Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com> Co-authored-by: OpenSauce04 --- .../citra_emu/activities/EmulationActivity.kt | 14 ++++++++++---- .../citra_emu/features/hotkeys/HotkeyUtility.kt | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index c5f23a6a6..35c7d0474 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -238,20 +238,26 @@ class EmulationActivity : AppCompatActivity() { preferences.getInt(InputBindingSetting.getInputButtonKey(event.keyCode), event.keyCode) val action: Int = when (event.action) { KeyEvent.ACTION_DOWN -> { + hotkeyUtility.handleHotkey(button) + // On some devices, the back gesture / button press is not intercepted by androidx // and fails to open the emulation menu. So we're stuck running deprecated code to // cover for either a fault on androidx's side or in OEM skins (MIUI at least) if (event.keyCode == KeyEvent.KEYCODE_BACK) { - onBackPressed() + // If the hotkey is pressed, we don't want to open the drawer + if (!hotkeyUtility.HotkeyIsPressed) { + onBackPressed() + } } - hotkeyUtility.handleHotkey(button) - // Normal key events. NativeLibrary.ButtonState.PRESSED } - KeyEvent.ACTION_UP -> NativeLibrary.ButtonState.RELEASED + KeyEvent.ACTION_UP -> { + hotkeyUtility.HotkeyIsPressed = false + NativeLibrary.ButtonState.RELEASED + } else -> return false } val input = event.device diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt index 338435ce1..0a4a1ffa3 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt @@ -17,6 +17,7 @@ class HotkeyUtility( private val context: Context) { private val hotkeyButtons = Hotkey.entries.map { it.button } + var HotkeyIsPressed = false fun handleHotkey(bindedButton: Int): Boolean { if(hotkeyButtons.contains(bindedButton)) { @@ -45,6 +46,7 @@ class HotkeyUtility( } else -> {} } + HotkeyIsPressed = true return true } return false