Fix action mode to use our own action mode toolbar instead of the built in androidx one.

This commit is contained in:
lisa-signal
2025-06-03 14:22:35 -04:00
committed by Cody Henthorne
parent 4db60ac63f
commit 74d9195d94
7 changed files with 98 additions and 101 deletions

View File

@@ -16,6 +16,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
@@ -250,6 +251,22 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
}
}
val callback = object : OnBackPressedCallback(toolbarViewModel.state.value.mode == MainToolbarMode.ACTION_MODE) {
override fun handleOnBackPressed() {
toolbarCallback.onCloseActionModeClick()
}
}
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
toolbarViewModel.state.collect { state ->
callback.isEnabled = state.mode == MainToolbarMode.ACTION_MODE
}
}
}
onBackPressedDispatcher.addCallback(this, callback)
shareDataTimestampViewModel.setTimestampFromActivityCreation(savedInstanceState, intent)
setContent {
@@ -810,6 +827,15 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
toolbarViewModel.emitEvent(MainToolbarViewModel.Event.Chats.CloseArchive)
}
override fun onCloseActionModeClick() {
supportFragmentManager.fragments.forEach { fragment ->
when (fragment) {
is ConversationListFragment -> fragment.endActionModeIfActive()
is CallLogFragment -> fragment.CallLogActionModeCallback().onActionModeWillEnd()
}
}
}
override fun onSearchQueryUpdated(query: String) {
toolbarViewModel.setSearchQuery(query)
}