Skip to content

Commit 54dfa7b

Browse files
committed
ui: cancel actionmode when pressing back button
Signed-off-by: Jason A. Donenfeld <[email protected]>
1 parent e5a7530 commit 54dfa7b

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

ui/src/main/java/com/wireguard/android/fragment/TunnelListFragment.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import android.view.ViewGroup
1616
import android.view.animation.Animation
1717
import android.view.animation.AnimationUtils
1818
import android.widget.Toast
19+
import androidx.activity.OnBackPressedCallback
20+
import androidx.activity.addCallback
1921
import androidx.activity.result.contract.ActivityResultContracts
2022
import androidx.appcompat.app.AppCompatActivity
2123
import androidx.appcompat.view.ActionMode
@@ -46,6 +48,7 @@ import kotlinx.coroutines.launch
4648
class TunnelListFragment : BaseFragment() {
4749
private val actionModeListener = ActionModeListener()
4850
private var actionMode: ActionMode? = null
51+
private var backPressedCallback: OnBackPressedCallback? = null
4952
private var binding: TunnelListFragmentBinding? = null
5053
private val tunnelFileImportResultLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { data ->
5154
if (data == null) return@registerForActivityResult
@@ -114,6 +117,9 @@ class TunnelListFragment : BaseFragment() {
114117
}
115118
executePendingBindings()
116119
}
120+
backPressedCallback = requireActivity().onBackPressedDispatcher.addCallback(this) { actionMode?.finish() }
121+
backPressedCallback?.isEnabled = false
122+
117123
return binding?.root
118124
}
119125

@@ -238,6 +244,7 @@ class TunnelListFragment : BaseFragment() {
238244

239245
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
240246
actionMode = mode
247+
backPressedCallback?.isEnabled = true
241248
if (activity != null) {
242249
resources = activity!!.resources
243250
}
@@ -249,6 +256,7 @@ class TunnelListFragment : BaseFragment() {
249256

250257
override fun onDestroyActionMode(mode: ActionMode) {
251258
actionMode = null
259+
backPressedCallback?.isEnabled = false
252260
resources = null
253261
animateFab(binding?.createFab, true)
254262
checkedItems.clear()

0 commit comments

Comments
 (0)