fix android tv focus

This commit is contained in:
2026-08-07 20:59:11 +03:00
parent cffcc8a2c7
commit e210e773e9
3 changed files with 17 additions and 15 deletions
@@ -3,10 +3,8 @@ package ru.shadowsparky.vbox.shared.presentation.overview.season
import androiddev.apps.vbox.client.shared.generated.resources.Res
import androiddev.apps.vbox.client.shared.generated.resources.retry
import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -18,7 +16,6 @@ import androidx.compose.runtime.withFrameNanos
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.resources.stringResource
import ru.shadowsparky.ui.LocalBlurState
import ru.shadowsparky.ui.applyBlurSource
@@ -26,6 +23,7 @@ import ru.shadowsparky.ui.components.BackButton
import ru.shadowsparky.ui.components.ErrorContent
import ru.shadowsparky.ui.components.ExpressiveLazyColumn
import ru.shadowsparky.ui.components.Loading
import ru.shadowsparky.ui.components.TextPreference
import ru.shadowsparky.ui.components.TopAppBar
import ru.shadowsparky.ui.rememberBlurState
import ru.shadowsparky.vbox.shared.domain.model.Season
@@ -79,14 +77,15 @@ fun SeasonsInfo(
content = {
section {
itemsIndexed(seasons) { index, season ->
SeasonInfo(
if (index == 0) {
TextPreference(
season.title,
onClick = { onClick(season.id) },
modifier = if (index == 0) {
Modifier.focusRequester(requester)
} else {
Modifier
},
season.title
) { onClick(season.id) }
}
)
}
}
}
@@ -99,8 +98,3 @@ fun SeasonsInfo(
}
}
}
@Composable
fun SeasonInfo(modifier: Modifier, titleText: String, onClick: () -> Unit) {
Text(titleText, modifier = modifier.fillMaxWidth().clickable { onClick() }.padding(16.dp))
}
@@ -6,6 +6,7 @@ import androiddev.feature.chat.chat_client.generated.resources.chat_load_error
import androiddev.feature.chat.chat_client.generated.resources.chat_ok
import androiddev.feature.chat.chat_client.generated.resources.chat_retry_button
import androiddev.feature.chat.chat_client.generated.resources.send
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -17,14 +18,17 @@ import androidx.compose.foundation.layout.calculateStartPadding
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
@@ -213,6 +217,7 @@ private fun MessageBubble(
onParseMessage: (String) -> List<TextToken>,
onClickLink: (String) -> Unit
) {
val scrollState = rememberScrollState()
val isUser = message.role == ChatRoles.USER
val alignment = if (isUser) Alignment.CenterEnd else Alignment.CenterStart
val containerColor = if (isUser) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surfaceVariant
@@ -248,7 +253,11 @@ private fun MessageBubble(
}
}
Box(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier.fillMaxWidth()
.heightIn(max = 400.dp)
.focusable()
.verticalScroll(scrollState)
,
contentAlignment = alignment
) {
Card(
@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card