From 2b8fd9d45e8ee05b4ac11666fcf53fb2ef73a4f9 Mon Sep 17 00:00:00 2001 From: ziro Date: Sun, 14 Jan 2024 10:50:05 +0700 Subject: [PATCH] fix: Hacky way to fix visual glitch after dismissing dialog Not sure why, but alpha turn to 0.0f after dialog is dismissed --- .../ui/base/controller/DialogController.kt | 41 ++++++++++--------- gradle/libs.versions.toml | 2 +- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/DialogController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/DialogController.kt index cd6a3c88bc..ed89e1e27d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/DialogController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/DialogController.kt @@ -9,6 +9,9 @@ import com.bluelinelabs.conductor.Controller import com.bluelinelabs.conductor.Router import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.changehandler.SimpleSwapChangeHandler +import eu.kanade.tachiyomi.util.view.previousController +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.MainScope /** * A controller that displays a dialog window, floating on top of its activity's window. @@ -36,14 +39,19 @@ abstract class DialogController : Controller { */ protected constructor(args: Bundle?) : super(args) + protected var onCreateViewScope: CoroutineScope? = null + private set + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View { - dialog = onCreateDialog(savedViewState) - dialog!!.setOwnerActivity(activity!!) - dialog!!.setOnDismissListener { dismissDialog() } - if (savedViewState != null) { - val dialogState = savedViewState.getBundle(SAVED_DIALOG_STATE_TAG) - if (dialogState != null) { - dialog!!.onRestoreInstanceState(dialogState) + onCreateViewScope = MainScope() + dialog = onCreateDialog(savedViewState).apply { + setOwnerActivity(activity!!) + setOnDismissListener { dismissDialog() } + if (savedViewState != null) { + val dialogState = savedViewState.getBundle(SAVED_DIALOG_STATE_TAG) + if (dialogState != null) { + onRestoreInstanceState(dialogState) + } } } return View(activity) // stub view @@ -77,21 +85,10 @@ abstract class DialogController : Controller { * @param router The router on which the transaction will be applied */ open fun showDialog(router: Router) { - showDialog(router, null) - } - - /** - * Display the dialog, create a transaction and pushing the controller. - * @param router The router on which the transaction will be applied - * @param tag The tag for this controller - */ - fun showDialog(router: Router, tag: String?) { dismissed = false router.pushController( RouterTransaction.with(this) - .pushChangeHandler(SimpleSwapChangeHandler(false)) - .popChangeHandler(SimpleSwapChangeHandler(false)) - .tag(tag), + .pushChangeHandler(SimpleSwapChangeHandler(false)), ) } @@ -102,7 +99,13 @@ abstract class DialogController : Controller { if (dismissed) { return } + val prev = this.previousController router.popController(this) + // FIXME: This is a hack so that previous controller stays visible + prev?.let { + if (it !is BaseController) return@let + it.view?.alpha = 1.0f + } dismissed = true } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a2ae04ce5..318efd299a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ coil-svg = { module = "io.coil-kt:coil-svg", version.ref = "coil" } coil-gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" } coil = { module = "io.coil-kt:coil", version.ref = "coil" } compose-theme-adapter3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version = "0.33.2-alpha" } -conductor = { module = "com.bluelinelabs:conductor", version = "4.0.0-preview-3" } +conductor = { module = "com.bluelinelabs:conductor", version = "4.0.0-preview-4" } conductor-support-preference = { module = "com.github.tachiyomiorg:conductor-support-preference", version = "3.0.0" } conscrypt = { module = "org.conscrypt:conscrypt-android", version = "2.5.2" } directionalviewpager = { module = "com.github.tachiyomiorg:DirectionalViewPager", version = "1.0.0" }