Fix window insets and search closing
This commit is contained in:
@@ -131,6 +131,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
|
|||||||
onBackPressedDispatcher.addCallback(exitCallback)
|
onBackPressedDispatcher.addCallback(exitCallback)
|
||||||
onBackPressedDispatcher.addCallback(navigationDelegate)
|
onBackPressedDispatcher.addCallback(navigationDelegate)
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
val legacySearchCallback = SearchViewLegacyBackCallback(viewBinding.searchView)
|
||||||
|
viewBinding.searchView.addTransitionListener(legacySearchCallback)
|
||||||
|
onBackPressedDispatcher.addCallback(legacySearchCallback)
|
||||||
|
}
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
onFirstStart()
|
onFirstStart()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package org.koitharu.kotatsu.main.ui
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
|
import androidx.annotation.DeprecatedSinceApi
|
||||||
|
import com.google.android.material.search.SearchView
|
||||||
|
|
||||||
|
@DeprecatedSinceApi(Build.VERSION_CODES.TIRAMISU)
|
||||||
|
class SearchViewLegacyBackCallback(
|
||||||
|
private val searchView: SearchView
|
||||||
|
) : OnBackPressedCallback(searchView.isShowing), SearchView.TransitionListener {
|
||||||
|
|
||||||
|
override fun handleOnBackPressed() {
|
||||||
|
searchView.hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStateChanged(
|
||||||
|
searchView: SearchView,
|
||||||
|
previousState: SearchView.TransitionState,
|
||||||
|
newState: SearchView.TransitionState
|
||||||
|
) {
|
||||||
|
isEnabled = newState >= SearchView.TransitionState.SHOWING
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -351,11 +351,11 @@ class ReaderActivity :
|
|||||||
override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat {
|
override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat {
|
||||||
gestureInsets = insets.getInsets(WindowInsetsCompat.Type.systemGestures())
|
gestureInsets = insets.getInsets(WindowInsetsCompat.Type.systemGestures())
|
||||||
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||||
viewBinding.appbarTop.updatePadding(
|
viewBinding.toolbar.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
top = systemBars.top,
|
topMargin = systemBars.top
|
||||||
right = systemBars.right,
|
rightMargin = systemBars.right
|
||||||
left = systemBars.left,
|
leftMargin = systemBars.left
|
||||||
)
|
}
|
||||||
if (viewBinding.toolbarDocked != null) {
|
if (viewBinding.toolbarDocked != null) {
|
||||||
viewBinding.actionsView.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
viewBinding.actionsView.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
bottomMargin = systemBars.bottom
|
bottomMargin = systemBars.bottom
|
||||||
|
|||||||
Reference in New Issue
Block a user