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),