From 1d87b4c9546b9dc82f782d2e465ab638ffcf7231 Mon Sep 17 00:00:00 2001 From: Peter Varga Date: Wed, 6 Apr 2022 11:14:31 +0200 Subject: Do not store CF_HTML header in QMimeData QMimeData doesn't handle it. Keep "\r\n\r\n" and "\r\n\r\n" tags because they are required for proper pasting of an HTML fragment on Windows. Fixes: QTBUG-100806 Task-number: QTBUG-92539 Change-Id: I9e8a2f9592e56b9acc011b7640e589c43b558543 Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit 91ef7c19f47a97a82a2f143c99dfd3b885d65729) Reviewed-by: Qt Cherry-pick Bot --- src/core/clipboard_qt.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/clipboard_qt.cpp b/src/core/clipboard_qt.cpp index 6549a19da..c8a94314d 100644 --- a/src/core/clipboard_qt.cpp +++ b/src/core/clipboard_qt.cpp @@ -173,7 +173,16 @@ void ClipboardQt::WriteHTML(const char *markup_data, size_t markup_len, const ch url.assign(url_data, url_len); std::string cf_html = HtmlToCFHtml(markup_string.toStdString(), url); - getUncommittedData()->setHtml(QString::fromStdString(cf_html)); + size_t html_start = std::string::npos; + size_t fragment_start = std::string::npos; + size_t fragment_end = std::string::npos; + CFHtmlExtractMetadata(cf_html, nullptr, &html_start, &fragment_start, &fragment_end); + + DCHECK(fragment_start != std::string::npos && fragment_end != std::string::npos + && html_start != std::string::npos); + DCHECK(fragment_start >= html_start && fragment_end >= fragment_start); + + getUncommittedData()->setHtml(QString::fromStdString(cf_html.substr(html_start))); #endif // !defined(Q_OS_WIN) } -- cgit v1.2.3