From 3dc725d2534a51090822c47c7eed4fd5339a9639 Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 17 May 2024 17:09:34 +0200 Subject: [PATCH 1/5] Save identities in `onStop()` instead of `onBackPressed()` This will also work when the user navigates back using the toolbar button. --- .../main/java/com/fsck/k9/activity/ManageIdentities.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/ManageIdentities.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/ManageIdentities.java index 501188a8715..fb832e9f39e 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/ManageIdentities.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/ManageIdentities.java @@ -131,9 +131,11 @@ public void onResume() { @Override - public void onBackPressed() { + public void onStop() { + // TODO: Instead of saving the changes when the activity is stopped, save the changes (in a background thread) + // immediately after modifying the list of identities. saveIdentities(); - super.onBackPressed(); + super.onStop(); } private void saveIdentities() { @@ -141,6 +143,5 @@ private void saveIdentities() { mAccount.setIdentities(identities); Preferences.getPreferences().saveAccount(mAccount); } - finish(); } } From 33b3f2d845b04f467588954348267c2994c31f1d Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 17 May 2024 18:11:31 +0200 Subject: [PATCH 2/5] Save composition defaults in `onStop()` instead of `onBackPressed()` --- .../fsck/k9/activity/setup/AccountSetupComposition.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupComposition.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupComposition.java index b463ea7c69f..cdbbefde10e 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupComposition.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/AccountSetupComposition.java @@ -111,7 +111,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home) { - onBackPressed(); + finish(); return true; } @@ -133,9 +133,11 @@ private void saveSettings() { } @Override - public void onBackPressed() { + public void onStop() { + // TODO: Instead of saving the changes when the activity is stopped, add buttons to explicitly save or discard + // changes. saveSettings(); - super.onBackPressed(); + super.onStop(); } @Override From cdde1bc9cb2d83c9b625e883c31a88526b058c50 Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 17 May 2024 18:18:38 +0200 Subject: [PATCH 3/5] Don't call `onBackPressed()` from `onSupportNavigateUp()` --- .../com/fsck/k9/ui/managefolders/ManageFoldersActivity.kt | 6 +++--- .../main/java/com/fsck/k9/ui/settings/SettingsActivity.kt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersActivity.kt b/app/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersActivity.kt index 66d3f0b6b12..1e3d8fca6cd 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersActivity.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersActivity.kt @@ -38,11 +38,11 @@ class ManageFoldersActivity : K9Activity() { } override fun onSupportNavigateUp(): Boolean { - return navController.navigateUp() || super.onSupportNavigateUp() || navigateUpBySimulatedBackButtonPress() + return navController.navigateUp() || super.onSupportNavigateUp() || finishActivity() } - private fun navigateUpBySimulatedBackButtonPress(): Boolean { - onBackPressed() + private fun finishActivity(): Boolean { + finish() return true } diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/SettingsActivity.kt b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/SettingsActivity.kt index 122b33207af..b5e90922e36 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/SettingsActivity.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/SettingsActivity.kt @@ -29,11 +29,11 @@ class SettingsActivity : K9Activity() { } override fun onSupportNavigateUp(): Boolean { - return navController.navigateUp() || super.onSupportNavigateUp() || navigateUpBySimulatedBackButtonPress() + return navController.navigateUp() || super.onSupportNavigateUp() || finishActivity() } - private fun navigateUpBySimulatedBackButtonPress(): Boolean { - onBackPressed() + private fun finishActivity(): Boolean { + finish() return true } From c988cba6c27b03c56c5cf6813490a2e6c436a7f2 Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 17 May 2024 19:06:59 +0200 Subject: [PATCH 4/5] We no longer need to manually collapse the search action view --- .../fsck/k9/ui/settings/general/GeneralSettingsActivity.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt index 50351a857b7..db67ccee1a1 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt @@ -118,12 +118,6 @@ class GeneralSettingsActivity : K9Activity(), OnPreferenceStartScreenCallback, S return super.onOptionsItemSelected(item) } - override fun onBackPressed() { - if (!searchPreferenceActionView.cancelSearch()) { - super.onBackPressed() - } - } - override fun onPreferenceStartScreen( caller: PreferenceFragmentCompat, preferenceScreen: PreferenceScreen, From 6a14c950a0101afa8f8a9f20403942ddf7e843ef Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 17 May 2024 19:17:16 +0200 Subject: [PATCH 5/5] Call `onBackPressedDispatcher.onBackPressed()` instead of `onBackPressed()` `FragmentManager`'s back button handler is exactly the behavior we want for the toolbar's home button. --- .../com/fsck/k9/ui/settings/account/AccountSettingsActivity.kt | 2 +- .../com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsActivity.kt b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsActivity.kt index c6776e9bca3..d2cc52ffe6e 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsActivity.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsActivity.kt @@ -98,7 +98,7 @@ class AccountSettingsActivity : K9Activity(), OnPreferenceStartScreenCallback { override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == android.R.id.home) { - onBackPressed() + onBackPressedDispatcher.onBackPressed() return true } diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt index db67ccee1a1..9cc39dbbdc1 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt +++ b/app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsActivity.kt @@ -111,7 +111,7 @@ class GeneralSettingsActivity : K9Activity(), OnPreferenceStartScreenCallback, S override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == android.R.id.home) { - onBackPressed() + onBackPressedDispatcher.onBackPressed() return true }