mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 03:18:55 +02:00
[android,ui] chore: back action behavior (a16 hypoeros) fix attempt 1
This commit is contained in:
parent
a1b50e9339
commit
6043dbd690
3 changed files with 29 additions and 4 deletions
|
|
@ -108,9 +108,10 @@ class SettingsActivity : AppCompatActivity() {
|
|||
fun navigateBack() {
|
||||
val navHostFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment
|
||||
if (navHostFragment.childFragmentManager.backStackEntryCount > 0) {
|
||||
navHostFragment.navController.popBackStack()
|
||||
} else {
|
||||
val navController = navHostFragment.navController
|
||||
val popped = navController.popBackStack()
|
||||
|
||||
if (!popped) {
|
||||
finishWithFragmentLikeAnimation()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -879,7 +879,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
setInsets()
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
requireActivity(),
|
||||
viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
if (!NativeLibrary.isRunning()) {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import android.view.ViewGroup.MarginLayoutParams
|
|||
import android.view.WindowManager
|
||||
import android.view.animation.PathInterpolator
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
|
|
@ -153,6 +154,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||
val navHostFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment
|
||||
setUpNavigation(navHostFragment.navController)
|
||||
installBackPressPolicy(navHostFragment.navController)
|
||||
|
||||
homeViewModel.statusBarShadeVisible.collect(this) { showStatusBarShade(it) }
|
||||
homeViewModel.contentToInstall.collect(
|
||||
|
|
@ -330,6 +332,28 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||
}
|
||||
}
|
||||
|
||||
private fun installBackPressPolicy(navController: NavController) {
|
||||
onBackPressedDispatcher.addCallback(
|
||||
this,
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
val isOnGamesScreen = navController.currentDestination?.id == R.id.gamesFragment
|
||||
if (isOnGamesScreen) {
|
||||
// Allow native OS/app exit behavior only from the games root screen.
|
||||
isEnabled = false
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
isEnabled = true
|
||||
return
|
||||
}
|
||||
|
||||
if (!navController.popBackStack()) {
|
||||
navController.navigate(R.id.gamesFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun showStatusBarShade(visible: Boolean) {
|
||||
binding.statusBarShade.animate().apply {
|
||||
if (visible) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue