mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-09 23:57:42 +00:00
4d43f2d41c
* desktop: fix copying selected text in reports Text selection in report items rendered a red reason prefix (e.g. "Spam: ") before the user's comment but dropped the prefix when copying, because selection offsets are in rendered-text space while copy extraction was operating on ci.text / ci.formattedText directly. Introduce itemPrefixText(ci) as the single source of truth for the rendered prefix, and drive both selection copy and snap-to-segment from a unified itemDisplaySegments list that prepends the prefix as a leading segment. This also fixes mention/link snapping on the selection boundary inside report comments. * desktop: scope report-selection fix to report items Inline a prefix preamble + offset shift in selectedItemCopiedText and snapOffset instead of routing every item through itemDisplaySegments. Non-report items now run the original pre-PR loop unchanged; reports emit the selected slice of the rendered prefix and shift body offsets by prefix.length. * desktop: simplify report selection arithmetic Selection offsets are in display-text space, which already includes the leading itemPrefixText for reports. Treat the prefix as the leading display segment and seed displayOffset with prefix.length, instead of shifting body offsets by prefix.length in the inner loop and gating snapOffset on offset <= prefix.length. The inner loop body of selectedItemCopiedText becomes identical to pre-PR for non-reports (prefix is "" so displayOffset starts at 0), and snapOffset reduces to a one-line seed change. Same fix, smaller diff, fewer intermediate variables. * desktop: drop helper, inline report-prefix in selection only Revert itemPrefixText helper extraction (TextItemView.kt and FramedItemView.kt back to pre-PR). Inline the report-prefix expression at its two use sites in TextSelection.kt directly. PR diff is now confined to TextSelection.kt: +13/-6. * desktop: extract itemPrefixText, drop dead defensive code Re-introduce itemPrefixText(ci) helper in TextItemView.kt and migrate all four sites that compute the report prefix (FramedItemView, ChatPreviewView, TextSelection x2). The prefix expression now has one definition and one place to change. Also drop the unreachable sel.first.coerceAtLeast(0) on the prefix-slice append — selectedRange guarantees sel.first >= 0. * plans: justify desktop fix for copying selected text in reports Add 2026-05-08-fix-select-in-reports.md covering the problem, the offset flow, the minimal structural change (seed displayOffset with prefix.length), the itemPrefixText single-source-of-truth migration across the four prefix sites, the verified edge-case table, and the rollback path.