tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 6285e5d4535e12588f1ae27d228ed8a43687ce0c
parent 74c11b9dd9fad9f506d6e4426378131f29f21f70
Author: Harrison Oglesby <oglesby.harrison@gmail.com>
Date:   Wed,  3 Dec 2025 23:57:38 +0000

Bug 2002028 - Fix cursor position for settings search r=android-reviewers,petru

Differential Revision: https://phabricator.services.mozilla.com/D274662

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchBar.kt | 23++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchBar.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchBar.kt @@ -14,7 +14,7 @@ import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable -import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -25,6 +25,8 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextRange +import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import mozilla.components.compose.base.button.IconButton import mozilla.components.compose.base.theme.AcornTheme @@ -63,7 +65,7 @@ fun SettingsSearchBar( ), ) - SideEffect { + LaunchedEffect(Unit) { focusRequester.requestFocus() } } @@ -74,19 +76,26 @@ private fun SettingsSearchField( focusRequester: FocusRequester, ) { val state by store.observeAsComposableState { it } - var searchQuery by remember { mutableStateOf(state.searchQuery) } + var searchQuery by remember { + mutableStateOf( + TextFieldValue( + text = state.searchQuery, + selection = TextRange(state.searchQuery.length), + ), + ) + } TextField( value = searchQuery, - onValueChange = { value: String -> + onValueChange = { value: TextFieldValue -> searchQuery = value - store.dispatch(SettingsSearchAction.SearchQueryUpdated(value)) + store.dispatch(SettingsSearchAction.SearchQueryUpdated(value.text)) }, textStyle = AcornTheme.typography.body1, modifier = Modifier .fillMaxWidth() .focusRequester(focusRequester), - placeholder = { + placeholder = @Composable { Text( text = stringResource(R.string.settings_search_title), style = AcornTheme.typography.body1, @@ -107,7 +116,7 @@ private fun SettingsSearchField( -> { ClearTextButton( onClick = { - searchQuery = "" + searchQuery = TextFieldValue("") store.dispatch(SettingsSearchAction.SearchQueryUpdated("")) }, )