gonzalezreal / swift-markdown-ui

Display and customize Markdown text in SwiftUI
MIT License
2.44k stars 298 forks source link

Can only select text from one paragraph at a time #264

Open everuribe opened 11 months ago

everuribe commented 11 months ago

Describe the bug When multiple paragraph strings are presented in a MarkdownUI view, the user can only select text from one paragraph at a time.

Checklist

Steps to reproduce Explanation of how to reproduce the incorrect behavior. This could include an attached project, a link to code, or a Markdown-formatted text exhibiting the issue.

  1. Display multi-paragraph text broken up by newlines

Expected behavior Should be able to select across all paragraphs (except maybe if broken up by a different markdown section type)

Screenshots image

Version information

gonzalezreal commented 11 months ago

Hi @everuribe,

This is a known issue of MarkdownUI. The current implementation combines multiple Text and Image views into containing layout views, which makes text selection work only at a paragraph level. I don't have a solution at the moment, but I am trying different things to make text selection work.

everuribe commented 11 months ago

Thanks for the context! I guess it relies on newlines to be able to switch to a different markdown type and therefore view but maybe we can detect if it's just a continuation of the same markdown type and keep it in the same Text view? I assume this is already happening for code blocks.

gonzalezreal commented 11 months ago

It's a bit more complicated than that. It doesn't rely on newlines, as spacing is configurable per block. On top of that, styling adds yet another layer of indirection. Regarding code blocks, those are rendered in a single view, so it works as you would expect.

As a workaround, you could add a gesture to the Markdown view that displays a context menu with an item to copy the contents.

wyk111wyk commented 6 months ago

I found it's not working on Mac Catalyst