diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index e9fa19ac6..e7fadef8f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -239,6 +239,10 @@ class HomeFragment : Fragment() { } } + view.wordmark.setOnClickListener { + showSavedSnackbar(2) + } + view.menuButton.setOnClickListener { homeMenu?.menuBuilder?.build(requireContext())?.show( anchor = it, @@ -327,9 +331,10 @@ class HomeFragment : Fragment() { override fun onAuthenticated(account: OAuthAccount, authType: AuthType) { if (authType != AuthType.Existing) { view?.let { - FenixSnackbar.make(it, Snackbar.LENGTH_SHORT).setText( - it.context.getString(R.string.onboarding_firefox_account_sync_is_on) - ).show() + FenixSnackbar.make(it, Snackbar.LENGTH_SHORT) + .setText(it.context.getString(R.string.onboarding_firefox_account_sync_is_on)) + .setAnchorView(bottom_bar) + .show() } } } @@ -723,7 +728,8 @@ class HomeFragment : Fragment() { deleteAllSessionsJob = null emitSessionChanges() }, - operation = deleteOperation + operation = deleteOperation, + anchorView = bottom_bar ) } @@ -746,7 +752,8 @@ class HomeFragment : Fragment() { pendingSessionDeletion = null emitSessionChanges() }, - operation = deleteOperation + operation = deleteOperation, + anchorView = bottom_bar ) // Update the UI with the tab removed, but don't remove it from storage yet @@ -905,7 +912,9 @@ class HomeFragment : Fragment() { R.string.create_collection_tab_saved } FenixSnackbar.make(view, Snackbar.LENGTH_LONG) - .setText(view.context.getString(stringRes)).show() + .setText(view.context.getString(stringRes)) + .setAnchorView(bottom_bar) + .show() } } } @@ -913,7 +922,10 @@ class HomeFragment : Fragment() { private fun showRenamedSnackbar() { view?.let { view -> val string = view.context.getString(R.string.snackbar_collection_renamed) - FenixSnackbar.make(view, Snackbar.LENGTH_LONG).setText(string).show() + FenixSnackbar.make(view, Snackbar.LENGTH_LONG) + .setText(string) + .setAnchorView(bottom_bar) + .show() } } diff --git a/app/src/main/java/org/mozilla/fenix/utils/Undo.kt b/app/src/main/java/org/mozilla/fenix/utils/Undo.kt index 4437be9b6..eee83fff6 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Undo.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Undo.kt @@ -31,7 +31,8 @@ fun CoroutineScope.allowUndo( message: String, undoActionTitle: String, onCancel: suspend () -> Unit = {}, - operation: suspend () -> Unit + operation: suspend () -> Unit, + anchorView: View? = null ) { // By using an AtomicBoolean, we achieve memory effects of reading and // writing a volatile variable. @@ -41,6 +42,7 @@ fun CoroutineScope.allowUndo( val snackbar = FenixSnackbar .make(view, FenixSnackbar.LENGTH_INDEFINITE) .setText(message) + .setAnchorView(anchorView) .setAction(undoActionTitle) { requestedUndo.set(true) launch {