vcl/osx/DataFlavorMapping.cxx | 18 ++++++++++++++++++ vcl/osx/OSXTransferable.cxx | 8 ++++++-- vcl/osx/OSXTransferable.hxx | 2 +- vcl/osx/clipboard.cxx | 6 +++++- 4 files changed, 30 insertions(+), 4 deletions(-)
New commits: commit a1709cb29a5f2f7a75f88335b6255249fd457d6f Author: Ujjawal Kumar <[email protected]> AuthorDate: Thu Feb 26 04:09:32 2026 +0530 Commit: Mike Kaganski <[email protected]> CommitDate: Wed Mar 4 10:49:22 2026 +0100 Add Markdown under paste special for osx backend. Change-Id: I24ef76b60eee6028499dbc599677201415c28290 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200360 Reviewed-by: Tor Lillqvist <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/vcl/osx/DataFlavorMapping.cxx b/vcl/osx/DataFlavorMapping.cxx index 855f6db9a287..19dfa59f7d42 100644 --- a/vcl/osx/DataFlavorMapping.cxx +++ b/vcl/osx/DataFlavorMapping.cxx @@ -739,6 +739,10 @@ NSArray* DataFlavorMapper::flavorSequenceToTypesArray(const css::uno::Sequence<c { [array addObject: NSPasteboardTypeTIFF]; } + else if (flavors[i].MimeType == "text/markdown") + { + [array addObject: NSPasteboardTypeString]; + } else { const NSString* str = openOfficeToSystemFlavor(flavors[i], bNeedDummyInternalFlavor, bIsSystemClipboard); @@ -763,12 +767,16 @@ css::uno::Sequence<css::datatransfer::DataFlavor> DataFlavorMapper::typesArrayTo { int nFormats = [types count]; Sequence<DataFlavor> flavors; + bool bHaveText = false; for (int i = 0; i < nFormats; i++) { NSString* sysFormat = [types objectAtIndex: i]; DataFlavor oOOFlavor = systemToOpenOfficeFlavor(sysFormat); + if (oOOFlavor.MimeType == u"text/plain;charset=utf-16") + bHaveText = true; + if (isValidFlavor(oOOFlavor)) { flavors.realloc(flavors.getLength() + 1); @@ -776,6 +784,16 @@ css::uno::Sequence<css::datatransfer::DataFlavor> DataFlavorMapper::typesArrayTo } } + if (bHaveText) + { + DataFlavor aFlavor; + aFlavor.MimeType = u"text/markdown"_ustr; + aFlavor.DataType = cppu::UnoType<OUString>::get(); + assert(isValidFlavor(aFlavor)); + flavors.realloc(flavors.getLength() + 1); + flavors.getArray()[flavors.getLength() - 1] = aFlavor; + } + return flavors; } diff --git a/vcl/osx/OSXTransferable.cxx b/vcl/osx/OSXTransferable.cxx index 725c56537a46..ed3aa69e7835 100644 --- a/vcl/osx/OSXTransferable.cxx +++ b/vcl/osx/OSXTransferable.cxx @@ -100,14 +100,18 @@ OSXTransferable::~OSXTransferable() [mPasteboard release]; } -Any SAL_CALL OSXTransferable::getTransferData( const DataFlavor& aFlavor ) +Any SAL_CALL OSXTransferable::getTransferData( const DataFlavor& rFlavor ) { - if (!isValidFlavor(aFlavor) || !isDataFlavorSupported(aFlavor)) + if (!isValidFlavor(rFlavor) || !isDataFlavorSupported(rFlavor)) { throw UnsupportedFlavorException("AquaClipboard: Unsupported data flavor", static_cast<XTransferable*>(this)); } + DataFlavor aFlavor(rFlavor); + if (aFlavor.MimeType == "text/markdown") + aFlavor.MimeType = u"text/plain;charset=utf-16"_ustr; + bool bInternal(false); NSString const * sysFormat = (aFlavor.MimeType.startsWith("image/png")) diff --git a/vcl/osx/OSXTransferable.hxx b/vcl/osx/OSXTransferable.hxx index e4a00b880eb6..9725a598ecf7 100644 --- a/vcl/osx/OSXTransferable.hxx +++ b/vcl/osx/OSXTransferable.hxx @@ -46,7 +46,7 @@ public: // XTransferable - virtual css::uno::Any SAL_CALL getTransferData( const css::datatransfer::DataFlavor& aFlavor ) override; + virtual css::uno::Any SAL_CALL getTransferData( const css::datatransfer::DataFlavor& rFlavor ) override; virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) override; diff --git a/vcl/osx/clipboard.cxx b/vcl/osx/clipboard.cxx index f5be6f86c339..9437dab7eb26 100644 --- a/vcl/osx/clipboard.cxx +++ b/vcl/osx/clipboard.cxx @@ -319,7 +319,11 @@ void SAL_CALL AquaClipboard::flushClipboard() for (sal_uInt32 i = 0; i < nFlavors; i++) { - const NSString* sysType = mpDataFlavorMapper->openOfficeToSystemFlavor(flavorList[i], bInternal); + datatransfer::DataFlavor aFlavor = flavorList[i]; + if (aFlavor.MimeType == "text/markdown") + aFlavor.MimeType = u"text/plain;charset=utf-16"_ustr; + + const NSString* sysType = mpDataFlavorMapper->openOfficeToSystemFlavor(aFlavor, bInternal); if (sysType != nullptr) {
