diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 98158a46e..de40e565a 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -513,7 +513,7 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc // Show the context menu if applicable guard let index = viewItems.firstIndex(where: { $0 === viewItem }), let cell = messagesTableView.cellForRow(at: IndexPath(row: index, section: 0)) as? VisibleMessageCell, - let snapshot = cell.bubbleView.snapshotView(afterScreenUpdates: false), contextMenuWindow == nil, + let snapshot = cell.snapshot(afterScreenUpdates: false), contextMenuWindow == nil, !ContextMenuVC.actions(for: viewItem, delegate: self).isEmpty else { return } UIImpactFeedbackGenerator(style: .heavy).impactOccurred() let frame = cell.convert(cell.bubbleView.frame, to: UIApplication.shared.keyWindow!) diff --git a/Session/Conversations/Message Cells/VisibleMessageCell.swift b/Session/Conversations/Message Cells/VisibleMessageCell.swift index cc14c4285..3a859edc0 100644 --- a/Session/Conversations/Message Cells/VisibleMessageCell.swift +++ b/Session/Conversations/Message Cells/VisibleMessageCell.swift @@ -1,3 +1,4 @@ +import UIKit final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate { private var isHandlingLongPress: Bool = false @@ -806,3 +807,19 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate { return result } } + +extension VisibleMessageCell { + public func snapshot(afterScreenUpdates afterUpdates: Bool) -> UIView? { + let labelForRendering = UILabel() + labelForRendering.numberOfLines = 0 + labelForRendering.backgroundColor = self.bubbleView.backgroundColor + if let bodyTextView = self.bodyTextView { + labelForRendering.attributedText = bodyTextView.attributedText + self.snContentView.addSubview(labelForRendering) + labelForRendering.frame = self.snContentView.convert(bodyTextView.frame, to: self.snContentView) + } + let snapshot = self.bubbleView.snapshotView(afterScreenUpdates: true) + labelForRendering.removeFromSuperview() + return snapshot + } +}