diff --git a/vcl/qt5/QtTransferable.cxx b/vcl/qt5/QtTransferable.cxx index e4cdd7d3466c..3abe8b9de19c 100644 --- a/vcl/qt5/QtTransferable.cxx +++ b/vcl/qt5/QtTransferable.cxx @@ -54,9 +54,9 @@ css::uno::Sequence SAL_CALL QtTransferable::getTr return css::uno::Sequence(); QStringList aFormatList(m_pMimeData->formats()); - // we might add the UTF-16 mime text variant later - const int nMimeTypeSeqSize = aFormatList.size() + 1; - bool bHaveNoCharset = false, bHaveUTF16 = false, bHaveUTF8 = false; + // we might add the UTF-16 mime text variant later and if plaintext is available then add markdown as well + const int nMimeTypeSeqSize = aFormatList.size() + 2; + bool bHaveNoCharset = false, bHaveUTF16 = false, bHaveUTF8 = false, bHavePlainText = false; css::uno::Sequence aMimeTypeSeq(nMimeTypeSeqSize); auto pMimeTypeSeq = aMimeTypeSeq.getArray(); @@ -90,6 +90,7 @@ css::uno::Sequence SAL_CALL QtTransferable::getTr bool bIsNoCharset = false, bIsUTF16 = false, bIsUTF8 = false; if (lcl_textMimeInfo(toOUString(rMimeType), bIsNoCharset, bIsUTF16, bIsUTF8)) { + bHavePlainText = true; bHaveNoCharset |= bIsNoCharset; bHaveUTF16 |= bIsUTF16; bHaveUTF8 |= bIsUTF8; @@ -119,6 +120,15 @@ css::uno::Sequence SAL_CALL QtTransferable::getTr nMimeTypeCount++; } + if (bHavePlainText) + { + aFlavor.MimeType = "text/markdown"; + aFlavor.DataType = cppu::UnoType::get(); + assert(nMimeTypeCount < nMimeTypeSeqSize); + pMimeTypeSeq[nMimeTypeCount] = aFlavor; + nMimeTypeCount++; + } + aMimeTypeSeq.realloc(nMimeTypeCount); return aMimeTypeSeq; @@ -139,7 +149,7 @@ css::uno::Any SAL_CALL QtTransferable::getTransferData(const css::datatransfer:: if (!isDataFlavorSupported(rFlavor)) return aAny; - if (rFlavor.MimeType == "text/plain;charset=utf-16") + if (rFlavor.MimeType == "text/plain;charset=utf-16" || rFlavor.MimeType == "text/markdown") { OUString aString; // use existing UTF-16 encoded MIME data if present