From e17903f40f556237e9ccbef55ce42c051d46e5cd Mon Sep 17 00:00:00 2001 From: Jonas Haugesen Date: Thu, 10 Sep 2026 12:03:00 +0200 Subject: [PATCH] Clear the search when the launcher is left, end keyboard search on dismiss Two fixes on top of the type-to-search feature: - The search no longer survives leaving the launcher. Upstream only resets the search when the launcher was in the background for more than five seconds, so a quick app switch or a fast return from a launched app left the old query on screen. The search page is now always reset, whatever the pause was. - Dismissing the search page ends the keyboard driven search. Without that the flag stayed set, so opening the search later (gesture or search bar) did not focus the text field and the soft keyboard stayed away. Version 1.40.2-typing.2. --- app/app/build.gradle.kts | 4 ++-- .../mm20/launcher2/ui/launcher/scaffold/LauncherScaffold.kt | 4 +++- .../ui/launcher/scaffold/components/SearchComponent.kt | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/app/build.gradle.kts b/app/app/build.gradle.kts index f57aa1718..ea07ef3d1 100644 --- a/app/app/build.gradle.kts +++ b/app/app/build.gradle.kts @@ -34,8 +34,8 @@ android { applicationId = "de.mm20.launcher2" minSdk = libs.versions.minSdk.get().toInt() targetSdk = libs.versions.targetSdk.get().toInt() - versionCode = System.getenv("VERSION_CODE_OVERRIDE")?.toIntOrNull() ?: 2026091000 - versionName = "1.40.2-typing.1" + versionCode = System.getenv("VERSION_CODE_OVERRIDE")?.toIntOrNull() ?: 2026091001 + versionName = "1.40.2-typing.2" signingConfig = signingConfigs.getByName("debug") } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/LauncherScaffold.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/LauncherScaffold.kt index 4d329457e..f43c8cd2e 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/LauncherScaffold.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/LauncherScaffold.kt @@ -1132,7 +1132,9 @@ internal fun LauncherScaffold( } else { activity.onBackPressedDispatcher.onBackPressed() } - } else if (activity.pauseTime > 0L && System.currentTimeMillis() - activity.pauseTime > 5000L) { + } else if (activity.pauseTime > 0L && (System.currentTimeMillis() - activity.pauseTime > 5000L || state.currentComponent is SearchComponent)) { + // The search does not survive leaving the launcher, not even for a short app + // switch: coming back should always show a fresh search. if (!state.isLocked) { if (state.currentComponent?.survivesPause != true) { state.reset() diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/components/SearchComponent.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/components/SearchComponent.kt index a94549243..428703c5d 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/components/SearchComponent.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/scaffold/components/SearchComponent.kt @@ -115,5 +115,8 @@ internal class SearchComponent( override fun onPreDismiss(state: LauncherScaffoldState) { super.onPreDismiss(state) state.isSearchBarFocused = false + // Leaving the search page ends the keyboard driven search, so that opening the search + // again focuses the text field as usual. + state.isTypingSearch = false } } \ No newline at end of file