Nheko-Reborn / nheko

Desktop client for Matrix using Qt and C++20.
https://nheko-reborn.github.io/
GNU General Public License v3.0
1.9k stars 199 forks source link

Selecting and copying multiple messages? #1169

Open nyanpasu64 opened 2 years ago

nyanpasu64 commented 2 years ago

The Problem

I frequently want to select multiple messages from a conversation to copy into notes or documentation. Currently Nheko does not allow selecting multiple messages, and every message has an independent selection region but only the focused message's selection takes effect upon Ctrl+C (and focus is invisible, see #1065).

The Solution

Add a selection mechanism like Discord/Element or text editors, where you can select any contiguous region of text spanning message boundaries. Or alternatively (probably easier to implement) add a Telegram/FluffyChat-style selection mechanism, where if you drag beyond the boundaries of a single message, it enters multi-message selection mode and you can check and uncheck entire messages to be copied.

Alternatives

In addition to the two approaches I described, another "nice to have" is a mechanism for batch-exporting long stretches of conversation history starting and ending at specific messages, into a HTML or machine-readable/structured file format. This is probably more difficult than Telegram-style message selection.

Additional context

No response

Happens in the latest version

tillea commented 1 year ago

This would be a really great feature.

pizdjuk commented 1 year ago

same here. Just now I use Element for this

tillea commented 1 year ago

Am Fri, Jan 06, 2023 at 11:23:54AM -0800 schrieb pizdjuk:

same here. Just now I use Element for this

I'm also using Element for this ... well, but it would be great to have a single client. ;-)

JackJeisly commented 1 year ago

It's also very handy for deleting selected messages. I second this suggestion with three hands ), it should be a must.

deepbluev7 commented 1 year ago

While seconding this suggestion is all well and good, I would argue upvoting the issue achieves the same. This is not trivial to implement, if your client is not a single text document in the first place, so someone contributing this would be appreciated. :)

LorenDB commented 1 year ago

https://www.kdab.com/handling-a-lot-of-text-in-qml/ has a link near the bottom of the page to an implementation showing how this could be done