diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2022-04-06 11:14:31 +0200 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2022-04-08 14:56:56 +0200 |
commit | 91ef7c19f47a97a82a2f143c99dfd3b885d65729 (patch) | |
tree | 4aacbd54d51af00e01e105c76c32379e80f2c647 /src/core | |
parent | 4eced65ecb8d777654b843b4f150e4f58f8d9d5d (diff) |
Do not store CF_HTML header in QMimeData
QMimeData doesn't handle it.
Keep
"<html>\r\n<body>\r\n<!--StartFragment-->"
and
"<!--EndFragment-->\r\n</body>\r\n</html>"
tags because they are required for proper pasting of an HTML fragment on
Windows.
Fixes: QTBUG-100806
Task-number: QTBUG-92539
Pick-to: 6.2 6.3
Change-Id: I9e8a2f9592e56b9acc011b7640e589c43b558543
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/clipboard_qt.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/clipboard_qt.cpp b/src/core/clipboard_qt.cpp index 39faf5c97..18d0a07b1 100644 --- a/src/core/clipboard_qt.cpp +++ b/src/core/clipboard_qt.cpp @@ -180,7 +180,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) } |