summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Sierd de Vries <contact@lecapuchon.nl>2026-08-13 01:13:05 +0200
committerDirk Sierd de Vries <contact@lecapuchon.nl>2026-08-13 01:13:05 +0200
commit0af2fa15bb853b1fae80cd9d852e1521beec64c5 (patch)
treea294647a31f3cb9468d9913b55c3781a3cc07abd
parent24cead725ddb0d601516399398d634cbfda0dec1 (diff)
downloadSidePhOnelauncher-0af2fa15bb853b1fae80cd9d852e1521beec64c5.tar.gz
SidePhOnelauncher-0af2fa15bb853b1fae80cd9d852e1521beec64c5.tar.bz2
SidePhOnelauncher-0af2fa15bb853b1fae80cd9d852e1521beec64c5.zip
Guard home focus callbacks after view destruction
-rw-r--r--app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt6
1 files changed, 6 insertions, 0 deletions
diff --git a/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt b/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt
index c687e63..d381a74 100644
--- a/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt
+++ b/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt
@@ -254,6 +254,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
fun shouldHandleUnfocusedDpadKeyEvent(): Boolean {
+ val binding = _binding ?: return false
val focusedView = activity?.currentFocus
return focusedView == null
|| focusedView == binding.mainLayout
@@ -292,6 +293,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun handleHomeKeyEvent(keyCode: Int, event: KeyEvent): Boolean {
+ val binding = _binding ?: return false
val visibleApps = getVisibleHomeApps()
if (activity?.currentFocus == binding.mainLayout) {
@@ -385,6 +387,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
fun ensureHomeFocus(): Boolean {
+ if (_binding == null) return false
val target = getPreferredHomeFocusTarget() ?: return false
val focusedView = activity?.currentFocus
if (focusedView == target && target.hasFocus()) return true
@@ -424,6 +427,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun getPreferredHomeFocusTarget(): View? {
+ val binding = _binding ?: return null
val firstVisibleHomeApp = getVisibleHomeApps().firstOrNull()
if (viewModel.consumeResetHomeFocusToFirstApp()) {
return firstVisibleHomeApp ?: getTopHomeHeaderTargets().firstOrNull()
@@ -443,6 +447,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun getTopHomeHeaderTargets(): List<View> {
+ val binding = _binding ?: return emptyList()
return buildList {
if (binding.clock.isVisible) add(binding.clock)
if (binding.date.isVisible) add(binding.date)
@@ -454,6 +459,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun getVisibleHomeApps(): List<View> {
+ val binding = _binding ?: return emptyList()
return listOf(
binding.homeApp1,
binding.homeApp2,