From eb256fe664d1797358dfaad5bd6f45d0a8dae63d Mon Sep 17 00:00:00 2001 From: sapphirerd Date: Sun, 31 Aug 2025 14:02:13 -0600 Subject: [PATCH] Prevent SecondaryDisplay from stealing focus The SecondaryDisplay Activity was stealing focus from the main Activity when it was launched. Set the `FLAG_NOT_FOCUSABLE` and `FLAG_NOT_TOUCH_MODAL` window flags to prevent the SecondaryDisplay from gaining focus. --- .../org/citra/citra_emu/display/SecondaryDisplay.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt b/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt index 709bb222e..8aae2144b 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt @@ -14,6 +14,7 @@ import android.view.Display import android.view.Surface import android.view.SurfaceHolder import android.view.SurfaceView +import android.view.WindowManager import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.features.settings.model.IntSetting @@ -50,7 +51,7 @@ class SecondaryDisplay(val context: Context) { } // if our presentation is already on the right display, ignore - if (pres?.display == display) return; + if (pres?.display == display) return // otherwise, make a new presentation releasePresentation() @@ -59,7 +60,6 @@ class SecondaryDisplay(val context: Context) { } private fun getCustomerDisplay(): Display? { - val displays = displayManager.displays // code taken from MelonDS dual screen - should fix odin 2 detection bug return displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION) .firstOrNull { it.displayId != Display.DEFAULT_DISPLAY && it.name != "Built-in Screen" && it.name != "HiddenDisplay"} @@ -81,6 +81,12 @@ class SecondaryDisplayPresentation( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + window?.setFlags( + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL + ) // Initialize SurfaceView surfaceView = SurfaceView(context)