From 5635846e0d220ff08d836cf074fc25ada1bd8a50 Mon Sep 17 00:00:00 2001
From: Chaikew <68963282+Chaikew@users.noreply.github.com>
Date: Thu, 9 Oct 2025 09:09:47 +0200
Subject: [PATCH] feat(ui): Add toggle to disable search bar background in app
drawer (#5934)
* feat(ui): Add toggle to disable search bar background in app drawer
* Fix double opacity on the Search Bar's background
- Before, the Search Bar added another -possibly transparent- layer on top of the already existing app drawer background.
- This adds a toggle to disable the double-opacity
- It is made so it is non regressive
Fixes #4158
* style(strings): Fixed inconsistency
---
lawnchair/res/values/config.xml | 1 +
lawnchair/res/values/strings.xml | 1 +
.../app/lawnchair/preferences2/PreferenceManager2.kt | 6 ++++++
.../preferences/destinations/AppDrawerPreferences.kt | 4 ++++
.../allapps/ActivityAllAppsContainerView.java | 10 +++++++++-
5 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index ad744e4acb..a5ab4bc714 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -119,6 +119,7 @@
true
false
false
+ true
true
true
false
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index d4a6edb637..b689651a7c 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -108,6 +108,7 @@
Wallpaper
Style
Background opacity
+ Separated Search bar background
Copied to clipboard
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index f6d2688fe1..c4d62044db 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -169,6 +169,12 @@ class PreferenceManager2 private constructor(private val context: Context) :
defaultValue = ColorOption.fromString(context.getString(R.string.config_default_app_drawer_bg_color)),
)
+ val appDrawerSearchBarBackground = preference(
+ key = booleanPreferencesKey(name = "all_apps_search_bar_background"),
+ defaultValue = context.resources.getBoolean(R.bool.config_default_search_bar_background),
+ onSet = { reloadHelper.recreate() },
+ )
+
val notificationDotColor = preference(
key = stringPreferencesKey(name = "notification_dot_color"),
parse = ColorOption::fromString,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
index 6215ffe10d..eb03df438a 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
@@ -97,6 +97,10 @@ fun AppDrawerPreferences(
valueRange = 0F..1F,
showAsPercentage = true,
)
+ SwitchPreference(
+ label = stringResource(id = R.string.pref_all_apps_search_bar_background),
+ adapter = prefs2.appDrawerSearchBarBackground.getAdapter(),
+ )
}
PreferenceGroup(heading = stringResource(id = R.string.grid)) {
SliderPreference(
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 751ac7fd1d..22269277e2 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -831,7 +831,15 @@ public class ActivityAllAppsContainerView
}
protected int getHeaderColor(float blendRatio) {
- var opacity = pref.getDrawerOpacity().get();
+ var showHeaderBackground = PreferenceExtensionsKt.firstBlocking(
+ pref2.getAppDrawerSearchBarBackground());
+
+ var opacity = 0.0f;
+
+ if (showHeaderBackground) {
+ opacity = pref.getDrawerOpacity().get();
+ }
+
var colorOptions = PreferenceExtensionsKt.firstBlocking(pref2.getAppDrawerBackgroundColor());
var color = colorOptions.getColorPreferenceEntry().getLightColor().invoke(mContext);
if (color != 0) {