Skip to content

Commit 49a268a

Browse files
authored
Fix cursor position in room list search (#5138)
1 parent f1a2d00 commit 49a268a

File tree

1 file changed

+20
-27
lines changed

1 file changed

+20
-27
lines changed

features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ import androidx.compose.material3.TextFieldDefaults
2323
import androidx.compose.material3.TopAppBarDefaults
2424
import androidx.compose.runtime.Composable
2525
import androidx.compose.runtime.LaunchedEffect
26+
import androidx.compose.runtime.getValue
27+
import androidx.compose.runtime.remember
28+
import androidx.compose.runtime.setValue
2629
import androidx.compose.ui.Modifier
2730
import androidx.compose.ui.draw.drawBehind
2831
import androidx.compose.ui.focus.FocusRequester
2932
import androidx.compose.ui.focus.focusRequester
3033
import androidx.compose.ui.geometry.Offset
3134
import androidx.compose.ui.graphics.Color
32-
import androidx.compose.ui.input.pointer.pointerInput
3335
import androidx.compose.ui.res.stringResource
3436
import androidx.compose.ui.tooling.preview.PreviewParameter
3537
import androidx.compose.ui.unit.dp
@@ -39,7 +41,7 @@ import io.element.android.features.home.impl.contentType
3941
import io.element.android.features.home.impl.model.RoomListRoomSummary
4042
import io.element.android.features.home.impl.roomlist.RoomListEvents
4143
import io.element.android.libraries.designsystem.components.button.BackButton
42-
import io.element.android.libraries.designsystem.modifiers.applyIf
44+
import io.element.android.libraries.designsystem.components.form.textFieldState
4345
import io.element.android.libraries.designsystem.preview.ElementPreview
4446
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
4547
import io.element.android.libraries.designsystem.theme.components.FilledTextField
@@ -68,24 +70,13 @@ internal fun RoomListSearchView(
6870
enter = fadeIn(),
6971
exit = fadeOut(),
7072
) {
71-
Column(
72-
modifier = modifier
73-
.applyIf(
74-
condition = state.isSearchActive,
75-
ifTrue = {
76-
// Disable input interaction to underlying views
77-
pointerInput(Unit) {}
78-
}
79-
)
80-
) {
81-
if (state.isSearchActive) {
82-
RoomListSearchContent(
83-
state = state,
84-
hideInvitesAvatars = hideInvitesAvatars,
85-
onRoomClick = onRoomClick,
86-
eventSink = eventSink,
87-
)
88-
}
73+
Column(modifier = modifier) {
74+
RoomListSearchContent(
75+
state = state,
76+
hideInvitesAvatars = hideInvitesAvatars,
77+
onRoomClick = onRoomClick,
78+
eventSink = eventSink,
79+
)
8980
}
9081
}
9182
}
@@ -120,15 +111,19 @@ private fun RoomListSearchContent(
120111
},
121112
navigationIcon = { BackButton(onClick = ::onBackButtonClick) },
122113
title = {
123-
val filter = state.query
124-
val focusRequester = FocusRequester()
114+
var filter by textFieldState(state.query)
115+
116+
val focusRequester = remember { FocusRequester() }
125117
FilledTextField(
126118
modifier = Modifier
127119
.fillMaxWidth()
128120
.focusRequester(focusRequester),
129121
value = filter,
130122
singleLine = true,
131-
onValueChange = { state.eventSink(RoomListSearchEvents.QueryChanged(it)) },
123+
onValueChange = {
124+
filter = it
125+
state.eventSink(RoomListSearchEvents.QueryChanged(it))
126+
},
132127
colors = TextFieldDefaults.colors(
133128
focusedContainerColor = Color.Transparent,
134129
unfocusedContainerColor = Color.Transparent,
@@ -152,10 +147,8 @@ private fun RoomListSearchContent(
152147
}
153148
)
154149

155-
LaunchedEffect(state.isSearchActive) {
156-
if (state.isSearchActive) {
157-
focusRequester.requestFocus()
158-
}
150+
LaunchedEffect(Unit) {
151+
focusRequester.requestFocus()
159152
}
160153
},
161154
windowInsets = TopAppBarDefaults.windowInsets.copy(top = 0)

0 commit comments

Comments
 (0)