|
|
|
@ -5,12 +5,7 @@
|
|
|
|
|
package org.mozilla.fenix.ext
|
|
|
|
|
|
|
|
|
|
import android.app.Activity
|
|
|
|
|
import android.os.Build.VERSION
|
|
|
|
|
import android.os.Build.VERSION_CODES
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.view.Window
|
|
|
|
|
import android.view.WindowInsets
|
|
|
|
|
import android.view.WindowInsets.Type
|
|
|
|
|
import android.view.WindowManager
|
|
|
|
|
import mozilla.components.concept.base.crash.Breadcrumb
|
|
|
|
|
|
|
|
|
@ -51,43 +46,3 @@ fun Activity.breadcrumb(
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handles inset changes for the whole activity.
|
|
|
|
|
*
|
|
|
|
|
* The deprecation of [WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE] in [VERSION_CODES.R]
|
|
|
|
|
* means inset changes have to be handled with a [View.OnApplyWindowInsetsListener].
|
|
|
|
|
* [Window.setDecorFitsSystemWindows] false tells the system that the app will handle all insets.
|
|
|
|
|
* When a keyboard is opened [WindowInsets.getInsets] of [Type.ime] updates accordingly.
|
|
|
|
|
*
|
|
|
|
|
* See https://github.com/mozilla-mobile/fenix/issues/17805.
|
|
|
|
|
* */
|
|
|
|
|
fun Activity.enableSystemInsetsHandling() {
|
|
|
|
|
if (VERSION.SDK_INT >= VERSION_CODES.R) {
|
|
|
|
|
val currentInsetTypes = mutableSetOf<Int>()
|
|
|
|
|
|
|
|
|
|
currentInsetTypes.add(Type.systemBars())
|
|
|
|
|
currentInsetTypes.add(Type.statusBars())
|
|
|
|
|
currentInsetTypes.add(Type.mandatorySystemGestures())
|
|
|
|
|
currentInsetTypes.add(Type.ime())
|
|
|
|
|
|
|
|
|
|
window.setDecorFitsSystemWindows(false)
|
|
|
|
|
|
|
|
|
|
window.decorView.setOnApplyWindowInsetsListener { v, _ ->
|
|
|
|
|
val currentInsetTypeMask = currentInsetTypes.fold(0) { accumulator, type ->
|
|
|
|
|
accumulator or type
|
|
|
|
|
}
|
|
|
|
|
val insets = window.decorView.rootWindowInsets.getInsets(currentInsetTypeMask)
|
|
|
|
|
v.setPadding(insets.left, insets.top, insets.right, insets.bottom)
|
|
|
|
|
|
|
|
|
|
WindowInsets.Builder()
|
|
|
|
|
.setInsets(currentInsetTypeMask, insets)
|
|
|
|
|
.build()
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
@Suppress("DEPRECATION")
|
|
|
|
|
window.setSoftInputMode(
|
|
|
|
|
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|