summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt19
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt3
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 ->