Clearing the room list search clears the search term too (#5603)

This commit is contained in:
Jorge Martin Espinosa
2025-10-24 09:30:10 +02:00
committed by GitHub
parent 6008af36ec
commit 009ceb8704

View File

@@ -25,6 +25,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawBehind
@@ -33,7 +34,6 @@ import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
@@ -111,7 +111,11 @@ private fun RoomListSearchContent(
},
navigationIcon = { BackButton(onClick = ::onBackButtonClick) },
title = {
var value by remember { mutableStateOf(TextFieldValue(state.query)) }
// TODO replace `state.query` with TextFieldState when it's available for M3 TextField
// The stateSaver will keep the selection state when returning to this UI
var value by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue(state.query))
}
val focusRequester = remember { FocusRequester() }
FilledTextField(
@@ -137,6 +141,8 @@ private fun RoomListSearchContent(
if (value.text.isNotEmpty()) {
IconButton(onClick = {
state.eventSink(RoomListSearchEvents.ClearQuery)
// Clear local state too
value = value.copy(text = "")
}) {
Icon(
imageVector = CompoundIcons.Close(),
@@ -148,7 +154,6 @@ private fun RoomListSearchContent(
)
LaunchedEffect(Unit) {
value = value.copy(selection = TextRange(value.text.length))
if (!focusRequester.restoreFocusedChild()) {
focusRequester.requestFocus()
}