From af329967282b31a6c53bbf284feea692cdf3984c Mon Sep 17 00:00:00 2001 From: jeffrey-signal Date: Wed, 7 Jan 2026 15:28:25 -0500 Subject: [PATCH] Exit multi-select mode on back press in sticker management. --- .../stickers/StickerManagementActivity.kt | 5 +++++ .../stickers/StickerManagementBottomSheet.kt | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt index 24d448ec5f..26e308bae2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt @@ -9,6 +9,7 @@ import android.content.Context import android.content.Intent import android.content.res.Resources import android.os.Bundle +import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable @@ -286,6 +287,10 @@ fun StickerManagementScreen( val pagerState = rememberPagerState(pageCount = { pages.size }) val coroutineScope = rememberCoroutineScope() + BackHandler(enabled = uiState.multiSelectEnabled) { + onSetMultiSelectModeEnabled(false) + } + Scaffold( topBar = { val isInstalledTabActive = pagerState.currentPage == 1 diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementBottomSheet.kt index adc498004f..1f5cd6f1e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementBottomSheet.kt @@ -7,12 +7,14 @@ package org.thoughtcrime.securesms.stickers import android.app.Dialog import android.os.Bundle +import androidx.activity.OnBackPressedCallback import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -52,6 +54,12 @@ class StickerManagementBottomSheet : ComposeBottomSheetDialogFragment() { private val viewModel by viewModel { StickerManagementViewModel() } + private val multiSelectBackPressCallback = object : OnBackPressedCallback(enabled = false) { + override fun handleOnBackPressed() { + viewModel.setMultiSelectEnabled(false) + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -67,12 +75,18 @@ class StickerManagementBottomSheet : ComposeBottomSheetDialogFragment() { return dialog.apply { behavior.skipCollapsed = true behavior.state = BottomSheetBehavior.STATE_EXPANDED + onBackPressedDispatcher.addCallback(multiSelectBackPressCallback) } } @Composable override fun SheetContent() { val uiState by viewModel.uiState.collectAsStateWithLifecycle() + + LaunchedEffect(uiState.multiSelectEnabled) { + multiSelectBackPressCallback.isEnabled = uiState.multiSelectEnabled + } + Column { Box( modifier = Modifier