From 96ef9cdbeec2ef5d89a1738dbe545b48d56fc83a Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Fri, 18 Oct 2019 16:39:08 +0200 Subject: [PATCH] Fixed insets not being implicitly asked for by the framework resulting in no coverage for other than main fragments --- .../magisk/redesign/compat/CompatDelegate.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatDelegate.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatDelegate.kt index 6ac1f00e4..cd4792956 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatDelegate.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatDelegate.kt @@ -1,6 +1,7 @@ package com.topjohnwu.magisk.redesign.compat import android.graphics.Insets +import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat @@ -11,6 +12,7 @@ import com.topjohnwu.magisk.model.events.FragmentExecutor import com.topjohnwu.magisk.model.events.ViewEvent import timber.log.Timber + class CompatDelegate internal constructor( private val view: CompatView<*> ) { @@ -43,8 +45,18 @@ class CompatDelegate internal constructor( insets.asInsets() .also { view.peekSystemWindowInsets(it) } .let { view.consumeSystemWindowInsets(it) } - .also { if (it != Insets.NONE) view.viewModel.insets.value = it } - .subtractBy(insets) + ?.also { view.viewModel.insets.value = it } + ?.subtractBy(insets) ?: insets + } + if (ViewCompat.isAttachedToWindow(view.viewRoot)) { + ViewCompat.requestApplyInsets(view.viewRoot) + } else { + view.viewRoot.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener { + override fun onViewDetachedFromWindow(v: View) = Unit + override fun onViewAttachedToWindow(v: View) { + ViewCompat.requestApplyInsets(v) + } + }) } }