Fix window insets and search closing

This commit is contained in:
Koitharu
2025-07-09 21:38:51 +03:00
parent d0084e50e7
commit 37f9c4b9f6
3 changed files with 35 additions and 5 deletions

View File

@@ -131,6 +131,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
onBackPressedDispatcher.addCallback(exitCallback)
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) {
onFirstStart()
}

View File

@@ -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
}
}

View File

@@ -351,11 +351,11 @@ class ReaderActivity :
override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat {
gestureInsets = insets.getInsets(WindowInsetsCompat.Type.systemGestures())
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
viewBinding.appbarTop.updatePadding(
top = systemBars.top,
right = systemBars.right,
left = systemBars.left,
)
viewBinding.toolbar.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = systemBars.top
rightMargin = systemBars.right
leftMargin = systemBars.left
}
if (viewBinding.toolbarDocked != null) {
viewBinding.actionsView.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = systemBars.bottom