diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DiscardChangesDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DiscardChangesDialog.kt index 33c5480de0dc..e989dd06e892 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DiscardChangesDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DiscardChangesDialog.kt @@ -31,11 +31,14 @@ object DiscardChangesDialog { positiveButtonText: String = context.getString(R.string.discard), negativeButtonText: String = CollectionManager.TR.addingKeepEditing(), message: String = CollectionManager.TR.addingDiscardCurrentInput(), + isCancellable: Boolean = true, + negativeMethod: () -> Unit = {}, positiveMethod: () -> Unit, ) = AlertDialog.Builder(context).show { + setCancelable(isCancellable) Timber.i("showing 'discard changes' dialog") message(text = message) positiveButton(text = positiveButtonText) { positiveMethod() } - negativeButton(text = negativeButtonText) + negativeButton(text = negativeButtonText) { negativeMethod() } } } diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/instantnoteeditor/InstantNoteEditorActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/instantnoteeditor/InstantNoteEditorActivity.kt index 063320fcdc04..a3841f7cdc1f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/instantnoteeditor/InstantNoteEditorActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/instantnoteeditor/InstantNoteEditorActivity.kt @@ -96,6 +96,8 @@ class InstantNoteEditorActivity : private lateinit var singleTapLayout: LinearLayout private lateinit var singleTapLayoutTitle: FixedTextView + private var isDialogShowing = false + /** Gets the actual cloze field text value **/ private val clozeFieldText: String? get() = viewModel.actualClozeFieldText.value @@ -103,6 +105,7 @@ class InstantNoteEditorActivity : private val dialogBackCallback = object : OnBackPressedCallback(false) { override fun handleOnBackPressed() { + if (isDialogShowing) return showDiscardChangesDialog() } } @@ -600,7 +603,11 @@ class InstantNoteEditorActivity : } private fun showDiscardChangesDialog() { - DiscardChangesDialog.showDialog(this) { + isDialogShowing = true + DiscardChangesDialog.showDialog(this, isCancellable = false, negativeMethod = { + isDialogShowing = false + }) { + isDialogShowing = false Timber.i("InstantNoteEditorActivity:: OK button pressed to confirm discard changes") finish() }