@@ -115,14 +115,14 @@ class ThreadAdapter(
115115
116116 override fun prepareActionMode (menu : Menu ) {
117117 val isOneItemSelected = isOneItemSelected()
118- val selectedItem = getSelectedItems().firstOrNull() as ? Message
119- val hasText = selectedItem?.body != null && selectedItem .body != " "
118+ val selectedMessages = getSelectedItems().filterIsInstance< Message >()
119+ val hasText = selectedMessages.any { it .body.isNotEmpty() }
120120 val showSaveAs = getSelectedItems().all {
121121 it is Message && (it.attachment?.attachments?.size ? : 0 ) > 0
122122 } && getSelectedAttachments().isNotEmpty()
123123
124124 menu.apply {
125- findItem(R .id.cab_copy_to_clipboard).isVisible = isOneItemSelected && hasText
125+ findItem(R .id.cab_copy_to_clipboard).isVisible = hasText
126126 findItem(R .id.cab_save_as).isVisible = showSaveAs
127127 findItem(R .id.cab_share).isVisible = isOneItemSelected && hasText
128128 findItem(R .id.cab_forward_message).isVisible = isOneItemSelected
@@ -219,8 +219,14 @@ class ThreadAdapter(
219219 }
220220
221221 private fun copyToClipboard () {
222- val firstItem = getSelectedItems().firstOrNull() as ? Message ? : return
223- activity.copyToClipboard(firstItem.body)
222+ val selectedMessages = getSelectedItems().filterIsInstance<Message >()
223+ val textToCopy = selectedMessages
224+ .mapNotNull { message -> message.body.takeIf { it.isNotEmpty() } }
225+ .joinToString(" \n\n " )
226+
227+ if (textToCopy.isNotEmpty()) {
228+ activity.copyToClipboard(textToCopy)
229+ }
224230 }
225231
226232 private fun getSelectedAttachments (): List <Attachment > {
0 commit comments