diff --git a/app/src/main/kotlin/com/arflix/tv/ui/screens/search/SearchScreen.kt b/app/src/main/kotlin/com/arflix/tv/ui/screens/search/SearchScreen.kt index 990a19969..6f230ab29 100644 --- a/app/src/main/kotlin/com/arflix/tv/ui/screens/search/SearchScreen.kt +++ b/app/src/main/kotlin/com/arflix/tv/ui/screens/search/SearchScreen.kt @@ -167,14 +167,13 @@ fun SearchScreen( when (event.key) { Key.Back, Key.Escape -> when (focusZone) { FocusZone.RESULTS -> { - if (showFilters) focusZone = FocusZone.FILTERS - else { focusZone = FocusZone.SEARCH_INPUT; searchFocusRequester.requestFocus() } + // Directly return to sidebar/topbar from results for expected back behavior + focusZone = FocusZone.SIDEBAR true } FocusZone.FILTERS -> { focusZone = FocusZone.SEARCH_INPUT; searchFocusRequester.requestFocus(); true } FocusZone.SEARCH_INPUT -> { - // If we have search results, go back to results instead of sidebar - // This fixes the issue where back from details goes to keyboard instead of results + // If we have active results, go back to results. Otherwise go to sidebar. if (activeCategories.isNotEmpty() || hasAiResults) { focusZone = FocusZone.RESULTS currentRowIndex = 0 diff --git a/app/src/main/kotlin/com/arflix/tv/ui/screens/settings/SettingsScreen.kt b/app/src/main/kotlin/com/arflix/tv/ui/screens/settings/SettingsScreen.kt index a0af581e9..c4316bfac 100644 --- a/app/src/main/kotlin/com/arflix/tv/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/arflix/tv/ui/screens/settings/SettingsScreen.kt @@ -253,7 +253,7 @@ fun SettingsScreen( if (scrollState.maxValue <= 0) return@LaunchedEffect val maxIndex = when (sectionIndex) { - 0 -> 12 // General: 13 items + 0 -> 13 // General: 14 items (includes DNS provider) 1 -> 3 // IPTV: Configure + Refresh + Delete + Stalker 2 -> uiState.catalogs.size // Catalogs 3 -> uiState.addons.size // Addons @@ -433,7 +433,7 @@ fun SettingsScreen( Zone.CONTENT -> { // Dynamic max based on current section val maxIndex = when (sectionIndex) { - 0 -> 12 // General: 13 items + 0 -> 13 // General: 14 items (includes DNS provider) 1 -> 3 // IPTV: Configure + Refresh + Delete + Stalker 2 -> uiState.catalogs.size // Catalogs: Add + N catalogs 3 -> uiState.addons.size // Addons: N addons + "Add Custom" button @@ -2290,7 +2290,7 @@ private fun GeneralSettings( title = "DNS Provider", subtitle = "Resolve API and stream requests", value = dnsProvider, - isFocused = focusedIndex == 12, + isFocused = focusedIndex == 13, onClick = onDnsProviderClick ) } diff --git a/app/src/main/kotlin/com/arflix/tv/ui/screens/watchlist/WatchlistScreen.kt b/app/src/main/kotlin/com/arflix/tv/ui/screens/watchlist/WatchlistScreen.kt index 229ef0ec4..6ae07797a 100644 --- a/app/src/main/kotlin/com/arflix/tv/ui/screens/watchlist/WatchlistScreen.kt +++ b/app/src/main/kotlin/com/arflix/tv/ui/screens/watchlist/WatchlistScreen.kt @@ -162,7 +162,8 @@ fun WatchlistScreen( } Key.DirectionLeft -> { if (!isSidebarFocused) { - true + // Let the grid handle left movement within items. + false } else { if (sidebarFocusIndex > 0) { sidebarFocusIndex = (sidebarFocusIndex - 1).coerceIn(0, maxSidebarIndex) @@ -177,6 +178,7 @@ fun WatchlistScreen( } true } else { + // Let the grid handle right movement within items. false } }