Clearing the room list search clears the search term too (#5603)
This commit is contained in:
parent
6008af36ec
commit
009ceb8704
1 changed files with 8 additions and 3 deletions
|
|
@ -25,6 +25,7 @@ import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.drawBehind
|
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.geometry.Offset
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.TextRange
|
|
||||||
import androidx.compose.ui.text.input.TextFieldValue
|
import androidx.compose.ui.text.input.TextFieldValue
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
@ -111,7 +111,11 @@ private fun RoomListSearchContent(
|
||||||
},
|
},
|
||||||
navigationIcon = { BackButton(onClick = ::onBackButtonClick) },
|
navigationIcon = { BackButton(onClick = ::onBackButtonClick) },
|
||||||
title = {
|
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() }
|
val focusRequester = remember { FocusRequester() }
|
||||||
FilledTextField(
|
FilledTextField(
|
||||||
|
|
@ -137,6 +141,8 @@ private fun RoomListSearchContent(
|
||||||
if (value.text.isNotEmpty()) {
|
if (value.text.isNotEmpty()) {
|
||||||
IconButton(onClick = {
|
IconButton(onClick = {
|
||||||
state.eventSink(RoomListSearchEvents.ClearQuery)
|
state.eventSink(RoomListSearchEvents.ClearQuery)
|
||||||
|
// Clear local state too
|
||||||
|
value = value.copy(text = "")
|
||||||
}) {
|
}) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = CompoundIcons.Close(),
|
imageVector = CompoundIcons.Close(),
|
||||||
|
|
@ -148,7 +154,6 @@ private fun RoomListSearchContent(
|
||||||
)
|
)
|
||||||
|
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
value = value.copy(selection = TextRange(value.text.length))
|
|
||||||
if (!focusRequester.restoreFocusedChild()) {
|
if (!focusRequester.restoreFocusedChild()) {
|
||||||
focusRequester.requestFocus()
|
focusRequester.requestFocus()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue