diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt | 19 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt | 3 |
2 files changed, 22 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt index 551f66e390..a63de128fa 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt @@ -29,6 +29,7 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) { val view = inflater.inflate(R.layout.advanced, container, false) view.findViewById<View>(R.id.back).setOnClickListener { + customDnsAdapter.stopEditing() parentActivity.onBackPressed() } @@ -53,10 +54,13 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) { ) } + attachBackButtonHandler() + return view } override fun onSafelyDestroyView() { + detachBackButtonHandler() customDnsAdapter.onDestroy() titleController.onDestroy() settingsListener.unsubscribe(this) @@ -113,4 +117,19 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) { } } } + + private fun attachBackButtonHandler() { + parentActivity.backButtonHandler = { + if (customDnsAdapter.isEditing) { + customDnsAdapter.stopEditing() + true + } else { + false + } + } + } + + private fun detachBackButtonHandler() { + parentActivity.backButtonHandler = null + } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt index f91ae37f7f..095a7ae7a8 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt @@ -47,6 +47,9 @@ class CustomDnsAdapter(val customDns: CustomDns) : Adapter<CustomDnsItemHolder>( } } + val isEditing + get() = editingPosition != null + init { customDns.apply { onDnsServersChanged.subscribe(this) { dnsServers -> |
