From bbcb08771570e0f7bcf83b79c2c5745e9f4a85e0 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 27 Sep 2022 23:30:25 +0200 Subject: [PATCH] Fix Launcher activity immediately finishing on new intent Fix #177 --- .../launcher2/ui/launcher/LauncherActivity.kt | 21 ++++++++++++++++++- .../ui/launcher/SharedLauncherActivity.kt | 14 +++---------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt index 4e8f1a5e1..6707460bd 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt @@ -1,4 +1,23 @@ package de.mm20.launcher2.ui.launcher +import android.content.Intent +import com.android.launcher3.GestureNavContract -class LauncherActivity: SharedLauncherActivity(LauncherActivityMode.Launcher) \ No newline at end of file + +class LauncherActivity: SharedLauncherActivity(LauncherActivityMode.Launcher) { + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + val navContract = intent?.let { GestureNavContract.fromIntent(it) } + if (navContract != null) { + homeTransitionManager.resolve(navContract) + } else { + onBackPressed() + } + } + + override fun onBackPressed() { + if (onBackPressedDispatcher.hasEnabledCallbacks()) { + onBackPressedDispatcher.onBackPressed() + } + } +} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt index 65636fb80..ace956533 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/SharedLauncherActivity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.content.res.Configuration import android.content.res.Resources import android.os.Bundle +import android.util.Log import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.background @@ -23,6 +24,7 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.pointer.pointerInput +import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsControllerCompat import androidx.lifecycle.Lifecycle @@ -55,7 +57,7 @@ abstract class SharedLauncherActivity( private val viewModel: LauncherActivityVM by viewModels() - private val homeTransitionManager = HomeTransitionManager() + internal val homeTransitionManager = HomeTransitionManager() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -188,16 +190,6 @@ abstract class SharedLauncherActivity( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } - override fun onNewIntent(intent: Intent?) { - super.onNewIntent(intent) - val navContract = intent?.let { GestureNavContract.fromIntent(it) } - if (navContract != null) { - homeTransitionManager.resolve(navContract) - } else { - onBackPressed() - } - } - enum class LauncherActivityMode { Launcher, Assistant