tor-browser

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

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

Bug 2003636 - Scrolling search results dismisses keyboard in Settings Search r=android-reviewers,petru

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

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchScreen.kt | 31++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchScreen.kt @@ -15,16 +15,20 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -125,9 +129,21 @@ private fun SearchResults( modifier: Modifier = Modifier, ) { val state by store.observeAsComposableState { it } + val focusManager = LocalFocusManager.current + val listState = rememberLazyListState() + + LaunchedEffect(listState) { + snapshotFlow { listState.isScrollInProgress } + .collect { isScrolling -> + if (isScrolling) { + focusManager.clearFocus() + } + } + } LazyColumn( modifier = modifier, + state = listState, ) { state.groupedResults.forEach { (header, items) -> item { @@ -168,6 +184,17 @@ private fun RecentSearchesContent( modifier: Modifier = Modifier, ) { val state by store.observeAsComposableState { it } + val focusManager = LocalFocusManager.current + val listState = rememberLazyListState() + + LaunchedEffect(listState) { + snapshotFlow { listState.isScrollInProgress } + .collect { isScrolling -> + if (isScrolling) { + focusManager.clearFocus() + } + } + } Column( modifier = modifier, @@ -201,7 +228,9 @@ private fun RecentSearchesContent( ) } } - LazyColumn { + LazyColumn( + state = listState, + ) { items(state.recentSearches.size) { index -> val searchItem = state.recentSearches[index]