From 180d730a23164263445eae0f51de1d0918969284 Mon Sep 17 00:00:00 2001 From: mike a Date: Thu, 29 Sep 2022 21:56:13 -0700 Subject: [PATCH] Closes #27209: fix WallpapersSettings crash (cherry picked from commit 595d931dc04a01277cb83538437e61a57fd55efe) --- .../settings/wallpaper/WallpaperSettingsFragment.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt index 5fc3b556e..f0a44ee8f 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettingsFragment.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -43,7 +44,7 @@ class WallpaperSettingsFragment : Fragment() { savedInstanceState: Bundle?, ): View { Wallpapers.wallpaperSettingsOpened.record(NoExtras()) - return ComposeView(requireContext()).apply { + val wallpaperSettings = ComposeView(requireContext()).apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { FirefoxTheme { @@ -70,7 +71,7 @@ class WallpaperSettingsFragment : Fragment() { onSelectWallpaper = { coroutineScope.launch { val result = wallpaperUseCases.selectWallpaper(it) - onWallpaperSelected(it, result, this@apply) + onWallpaperSelected(it, result, requireView()) } }, onLearnMoreClick = { url, collectionName -> @@ -90,6 +91,12 @@ class WallpaperSettingsFragment : Fragment() { } } } + + // Using CoordinatorLayout as a parent view for the fragment gives the benefit of hiding + // snackbars automatically when the fragment is closed. + return CoordinatorLayout(requireContext()).apply { + addView(wallpaperSettings) + } } private fun onWallpaperSelected(