From a6f3ca06100bc23eee5017d6cf53e89282dc580d Mon Sep 17 00:00:00 2001 From: Oliver Specht Date: Fri, 30 Dec 2016 16:47:17 +0100 Subject: tdf#101828 handle rtf/richtext correctly Change-Id: Id894f62a918bd6e6fa59f8d546307343bf2bd4b0 Reviewed-on: https://gerrit.libreoffice.org/32682 Tested-by: Jenkins Reviewed-by: Thorsten Behrens (cherry picked from commit 048e30c1f8231e6cd144a9251061f6fa127b353e) Reviewed-on: https://gerrit.libreoffice.org/33567 Reviewed-by: Miklos Vajna --- editeng/source/editeng/eeobj.cxx | 8 +++++--- editeng/source/editeng/impedit2.cxx | 11 ++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'editeng/source') diff --git a/editeng/source/editeng/eeobj.cxx b/editeng/source/editeng/eeobj.cxx index 7347fa3f9ca8..c72354e3bb16 100644 --- a/editeng/source/editeng/eeobj.cxx +++ b/editeng/source/editeng/eeobj.cxx @@ -57,7 +57,7 @@ uno::Any EditDataObject::getTransferData( const datatransfer::DataFlavor& rFlavo { aAny <<= GetString(); } - else if ( ( nT == SotClipboardFormatId::EDITENGINE ) || ( nT == SotClipboardFormatId::RTF ) ) + else if ( ( nT == SotClipboardFormatId::EDITENGINE ) || ( nT == SotClipboardFormatId::RTF ) || ( nT == SotClipboardFormatId::RICHTEXT ) ) { // No RTF on demand any more: // 1) Was not working, because I had to flush() the clipboard immediately anyway @@ -84,10 +84,11 @@ uno::Any EditDataObject::getTransferData( const datatransfer::DataFlavor& rFlavo uno::Sequence< datatransfer::DataFlavor > EditDataObject::getTransferDataFlavors( ) throw(uno::RuntimeException, std::exception) { - uno::Sequence< datatransfer::DataFlavor > aDataFlavors(3); + uno::Sequence< datatransfer::DataFlavor > aDataFlavors(4); SotExchange::GetFormatDataFlavor( SotClipboardFormatId::EDITENGINE, aDataFlavors.getArray()[0] ); SotExchange::GetFormatDataFlavor( SotClipboardFormatId::STRING, aDataFlavors.getArray()[1] ); SotExchange::GetFormatDataFlavor( SotClipboardFormatId::RTF, aDataFlavors.getArray()[2] ); + SotExchange::GetFormatDataFlavor( SotClipboardFormatId::RICHTEXT, aDataFlavors.getArray()[3] ); return aDataFlavors; } @@ -97,7 +98,8 @@ sal_Bool EditDataObject::isDataFlavorSupported( const datatransfer::DataFlavor& bool bSupported = false; SotClipboardFormatId nT = SotExchange::GetFormat( rFlavor ); - if ( ( nT == SotClipboardFormatId::STRING ) || ( nT == SotClipboardFormatId::RTF ) || ( nT == SotClipboardFormatId::EDITENGINE ) ) + if ( ( nT == SotClipboardFormatId::STRING ) || ( nT == SotClipboardFormatId::RTF ) || ( nT == SotClipboardFormatId::RICHTEXT ) + || ( nT == SotClipboardFormatId::EDITENGINE ) ) bSupported = true; return bSupported; diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 4de0042675fc..a879060b0b28 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -3490,8 +3490,17 @@ EditSelection ImpEditEngine::InsertText( uno::Reference< datatransfer::XTransfer { // RTF SotExchange::GetFormatDataFlavor( SotClipboardFormatId::RTF, aFlavor ); - if ( rxDataObj->isDataFlavorSupported( aFlavor ) ) + // RICHTEXT + datatransfer::DataFlavor aFlavorRichtext; + SotExchange::GetFormatDataFlavor( SotClipboardFormatId::RTF, aFlavorRichtext ); + bool bRtfSupported = rxDataObj->isDataFlavorSupported( aFlavor ); + bool bRichtextSupported = rxDataObj->isDataFlavorSupported( aFlavorRichtext ); + if ( bRtfSupported || bRichtextSupported ) { + if(bRichtextSupported) + { + aFlavor = aFlavorRichtext; + } try { uno::Any aData = rxDataObj->getTransferData( aFlavor ); -- cgit