From 3a4bb9a6fdf6999d2ab0bce314c8ff98ef42e0eb Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Fri, 4 Sep 2026 21:08:49 +0700 Subject: [PATCH] fix: Recompose QSB on state changes (#7242) --- .../src/app/lawnchair/allapps/AllAppsSearchInput.kt | 13 +++++++++++++ lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt b/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt index c1750e5c0c..0325d69627 100644 --- a/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt +++ b/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt @@ -14,6 +14,7 @@ import android.text.style.ForegroundColorSpan import android.util.AttributeSet import android.view.KeyEvent import android.view.MotionEvent +import android.view.View import android.view.ViewTreeObserver import android.view.ViewTreeObserver.OnGlobalFocusChangeListener import android.view.animation.DecelerateInterpolator @@ -247,6 +248,18 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) : } } + // Stop Compose QSB from disappearing + // https://stackoverflow.com/questions/72781705/jetpack-compose-view-not-drawing-when-coming-back-to-fragment/77496737#77496737 + qsbShell.addOnAttachStateChangeListener(object : OnAttachStateChangeListener { + override fun onViewAttachedToWindow(v: View) { + requestLayout() + qsbShell.disposeComposition() + } + override fun onViewDetachedFromWindow(v: View) { + qsbShell.disposeComposition() + } + }) + val currentPaddingLeft = initialPaddingLeft val currentPaddingRight = initialPaddingRight diff --git a/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt b/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt index 91023d926f..93e9f911ee 100644 --- a/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt +++ b/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.graphics.Rect import android.graphics.RectF import android.util.AttributeSet +import android.view.View import android.widget.FrameLayout import androidx.compose.runtime.getValue import androidx.compose.runtime.remember @@ -137,6 +138,18 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex } } + // Stop Compose QSB from disappearing + // https://stackoverflow.com/questions/72781705/jetpack-compose-view-not-drawing-when-coming-back-to-fragment/77496737#77496737 + composeView.addOnAttachStateChangeListener(object : OnAttachStateChangeListener { + override fun onViewAttachedToWindow(v: View) { + requestLayout() + composeView.disposeComposition() + } + override fun onViewDetachedFromWindow(v: View) { + composeView.disposeComposition() + } + }) + addView( composeView, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT),