From 2b25e9bedd1b88ac3a1bd36d1cd89c668d71cbc2 Mon Sep 17 00:00:00 2001 From: xXJsonDeruloXx Date: Thu, 24 Sep 2026 07:46:20 -0400 Subject: [PATCH] Log session drawer controller routing --- .../java/com/droiddeck/launcher/SessionActivity.kt | 10 +++++++++- .../java/com/droiddeck/launcher/ui/SessionOverlay.kt | 6 +++++- .../java/com/droiddeck/launcher/ui/SettingsWidgets.kt | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt index 5330ee9cd..f250d5e9f 100644 --- a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt @@ -197,7 +197,8 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { if (drawerOpen) { padBridge?.releaseAll() androidx.compose.runtime.withFrameNanos { } - sessionOverlay.requestFocus() + val requested = sessionOverlay.requestFocus() + Log.i(TAG, "drawer root focus requested=$requested focused=${sessionOverlay.hasFocus()}") } else { releaseDrawerDirection() } @@ -676,6 +677,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { } if (drawerOpen) { val handled = super.dispatchKeyEvent(event) + if (event.action == KeyEvent.ACTION_DOWN) { + Log.i(TAG, "drawer key=${KeyEvent.keyCodeToString(event.keyCode)} handled=$handled viewFocused=${sessionOverlay.hasFocus()}") + } if (event.keyCode == KeyEvent.KEYCODE_BUTTON_B || event.keyCode == KeyEvent.KEYCODE_BACK) { if (!handled && event.action == KeyEvent.ACTION_DOWN && event.repeatCount == 0) drawerOpen = false releaseDrawerDirection() @@ -769,6 +773,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { } val now = SystemClock.uptimeMillis() if (keyCode != drawerDirectionKey) { + Log.i(TAG, "drawer axis source=${event.source} x=$x y=$y direction=$keyCode") releaseDrawerDirection() if (keyCode == KeyEvent.KEYCODE_UNKNOWN) return drawerDirectionKey = keyCode @@ -794,6 +799,9 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { drawerDirectionDownTime, eventTime, action, drawerDirectionKey, repeatCount, 0, drawerDirectionDeviceId, 0, 0, InputDevice.SOURCE_DPAD, ) + if (action == KeyEvent.ACTION_DOWN) { + Log.i(TAG, "drawer synthetic key=${KeyEvent.keyCodeToString(drawerDirectionKey)} viewFocused=${sessionOverlay.hasFocus()}") + } super.dispatchKeyEvent(event) } diff --git a/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt index 0f443fbdc..b82c12946 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SessionOverlay.kt @@ -69,6 +69,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.InputMode @@ -277,7 +278,10 @@ fun SessionDrawer(open: Boolean, a: DrawerActions) { onClick = { host.open = null; a.onSteamMenu.invoke() }, interactionSource = steamSrc, modifier = Modifier.weight(1f).height(48.dp).focusRequester(firstFocus) - .onFocusChanged { firstControlFocused = it.isFocused }.controllerConfirm { + .onFocusChanged { + firstControlFocused = it.isFocused + android.util.Log.i("SessionDrawer", "first control focused=${it.isFocused}") + }.controllerConfirm { host.open = null a.onSteamMenu.invoke() }, diff --git a/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt b/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt index 5139689b8..a7322987b 100644 --- a/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt +++ b/app/src/main/java/com/droiddeck/launcher/ui/SettingsWidgets.kt @@ -122,6 +122,7 @@ fun AnchoredMenu(open: Boolean, onDismiss: () -> Unit, title: String? = null, no if (open) { repeat(2) { androidx.compose.runtime.withFrameNanos { } } runCatching { firstItemFocus.requestFocus() } + android.util.Log.i("AnchoredMenu", "requested first option focus") } } val gap = with(LocalDensity.current) { 6.dp.roundToPx() }