From 605b85455b94021ee671ca00a2348b48a3b30e50 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 29 Oct 2025 13:11:29 -0300 Subject: [PATCH] Fix action mode back handling in conversation fragment. --- .../securesms/conversation/v2/ConversationFragment.kt | 6 ++++++ .../conversation/v2/ConversationViewModel.kt | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 810e48bfa6..c7e23cb73c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -934,6 +934,8 @@ class ConversationFragment : //endregion private fun startActionMode() { + viewModel.setIsInActionMode(true) + actionModeTopBarView.isVisible = true actionModeTopBarView.onCloseClick = this::finishActionMode actionModeTopBarView.title = calculateSelectedItemCount() @@ -958,6 +960,8 @@ class ConversationFragment : } private fun finishActionMode() { + viewModel.setIsInActionMode(false) + actionModeTopBarView.isVisible = false adapter.clearSelection() @@ -2497,6 +2501,8 @@ class ConversationFragment : reactionDelegate.hide() } else if (state.isSearchRequested) { searchMenuItem?.collapseActionView() + } else if (state.isInActionMode) { + finishActionMode() } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index f4deebb47a..b2e956d57e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -654,6 +654,12 @@ class ConversationViewModel( } } + fun setIsInActionMode(isInActionMode: Boolean) { + internalBackPressedState.update { + it.copy(isInActionMode = isInActionMode) + } + } + fun toggleVote(poll: PollRecord, pollOption: PollOption, isChecked: Boolean) { viewModelScope.launch(Dispatchers.IO) { val voteCount = if (isChecked) { @@ -678,8 +684,9 @@ class ConversationViewModel( data class BackPressedState( val isReactionDelegateShowing: Boolean = false, - val isSearchRequested: Boolean = false + val isSearchRequested: Boolean = false, + val isInActionMode: Boolean = false ) { - fun shouldHandleBackPressed() = isSearchRequested || isReactionDelegateShowing + fun shouldHandleBackPressed() = isSearchRequested || isReactionDelegateShowing || isInActionMode } }