vcl/qt5/QtTransferable.cxx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)
New commits: commit ec95d529b51e95b074adaafb9f113904fed636c7 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Feb 14 10:38:13 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Feb 14 16:42:52 2025 +0100 tdf#165238 qt: Rely on Qt for "text/plain" and UTF-8 clipboard text QMimeData::text implements handling for the "text/plain;charset=utf-8" and "text/plain" MIME types (see [1]). Rely on that instead of implementing our own handling for these MIME types. This fixes copying Greek characters from Firefox as plain text into Writer with qt6 on Wayland (tdf#165238). This approach was already mentioned as an idea in commit 5b3227fac58dcbd588e2389e205679cd77842bac Author: Michael Weghorn <m.wegh...@posteo.de> Date: Wed Apr 6 13:51:59 2022 +0200 tdf#147285 qt: Prefer "text/plain;charset=utf-8" over "text/plain" > (An alternative solution to adding our own handling for > "text/plain;charset=utf-8" and making assumptions for the > encoding of "text/plain" data would be to let Qt handle > this and just call `QMimeData::text()` for the > `m_bProvideUTF16FromOtherEncoding=true` case > in `QtTransferable::getTransferData`. > Since qtbase commit 589a01ff6b1eacf81e74a5fc4801572135214f43 > ("QMimeData: Prefer UTF-8 when multiple charsets are available", > contained in Qt >= 5.13), that one handles MIME type > "text/plain;charset=utf-8" in addition to "text/plain".) [1] https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qmimedata.cpp?id=6c61d7b0f804ae5c048af95abef4d41ecc8862df#n383 Change-Id: Iee695f62e836f3a8776b719ca95afb8fbddea82f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181660 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/qt5/QtTransferable.cxx b/vcl/qt5/QtTransferable.cxx index 099ce3645c84..edea493a8a11 100644 --- a/vcl/qt5/QtTransferable.cxx +++ b/vcl/qt5/QtTransferable.cxx @@ -144,23 +144,16 @@ css::uno::Any SAL_CALL QtTransferable::getTransferData(const css::datatransfer:: if (rFlavor.MimeType == "text/plain;charset=utf-16") { OUString aString; - // use existing UTF-16 encoded text/plain or convert to UTF-16 as needed + // use existing UTF-16 encoded MIME data if present if (m_pMimeData->hasFormat("text/plain;charset=utf-16")) { QByteArray aByteData(m_pMimeData->data(toQString(rFlavor.MimeType))); aString = OUString(reinterpret_cast<const sal_Unicode*>(aByteData.data()), aByteData.size() / 2); } - else if (m_pMimeData->hasFormat("text/plain;charset=utf-8")) - { - QByteArray aByteData(m_pMimeData->data(QStringLiteral("text/plain;charset=utf-8"))); - aString = OUString::fromUtf8(reinterpret_cast<const char*>(aByteData.data())); - } else { - QByteArray aByteData(m_pMimeData->data(QStringLiteral("text/plain"))); - aString = OUString(reinterpret_cast<const char*>(aByteData.data()), aByteData.size(), - osl_getThreadTextEncoding()); + aString = toOUString(m_pMimeData->text()); } aAny <<= aString; }