From 6143d11e1ac36cd51591261972f3d0cb60013c2a Mon Sep 17 00:00:00 2001 From: Integral Date: Thu, 9 Jan 2025 13:39:27 +0800 Subject: [PATCH] Decode HTML entities when copying text to clipboard (fixes #1850) Currently, when using `Copy` in the context menu, the text will be HTML escaped (e.g. `"` becomes `"`). Add a function to decode HTML entities when copying to clipboard. This PR fixes issue #1850. --- resources/qml/MessageView.qml | 4 ++-- src/Clipboard.cpp | 7 +++++++ src/Clipboard.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml index ea46b6ef..b7c19ba7 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml @@ -477,7 +477,7 @@ Item { text: qsTr("&Copy") visible: messageContextMenuC.text - onTriggered: Clipboard.text = messageContextMenuC.text + onTriggered: Clipboard.setHtmlText(messageContextMenuC.text) } } Component { @@ -679,7 +679,7 @@ Item { text: qsTr("&Copy") visible: replyContextMenuC.text - onTriggered: Clipboard.text = replyContextMenuC.text + onTriggered: Clipboard.setHtmlText(replyContextMenuC.text) } } Component { diff --git a/src/Clipboard.cpp b/src/Clipboard.cpp index cb02f5fa..bdcc1f7a 100644 --- a/src/Clipboard.cpp +++ b/src/Clipboard.cpp @@ -6,6 +6,7 @@ #include #include +#include Clipboard::Clipboard(QObject *parent) : QObject(parent) @@ -19,6 +20,12 @@ Clipboard::setText(QString text) QGuiApplication::clipboard()->setText(text); } +void +Clipboard::setHtmlText(QString text) +{ + setText(QTextDocumentFragment::fromHtml(text).toPlainText()); +} + QString Clipboard::text() const { diff --git a/src/Clipboard.h b/src/Clipboard.h index e3321c02..1386b802 100644 --- a/src/Clipboard.h +++ b/src/Clipboard.h @@ -21,6 +21,7 @@ public: QString text() const; void setText(QString text_); + Q_INVOKABLE void setHtmlText(QString text_); signals: void textChanged(); };