diff --git a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt index 1fbcb5b3c..b400917c9 100644 --- a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt @@ -36,6 +36,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusDirection import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color @@ -291,6 +292,7 @@ fun SearchToolbar( onSearch(searchQuery) focusManager.clearFocus() keyboardController?.hide() + focusManager.moveFocus(FocusDirection.Next) } BasicTextField( diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt index 856ef899e..857674a5c 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Modifier.kt @@ -19,8 +19,10 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.platform.LocalFocusManager import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA @@ -53,8 +55,15 @@ fun Modifier.clickableNoIndication( fun Modifier.runOnEnterKeyPressed(action: () -> Unit): Modifier = this.onPreviewKeyEvent { when (it.key) { Key.Enter, Key.NumPadEnter -> { - action() - true + // Physical keyboards generate two event types: + // - KeyDown when the key is pressed + // - KeyUp when the key is released + if (it.type == KeyEventType.KeyDown) { + action() + true + } else { + false + } } else -> false