[Libreoffice-commits] core.git: editeng/source

Varun Dhall varun.dhall at studentpartner.com
Wed Jun 7 12:49:39 UTC 2017


 editeng/source/editeng/impedit2.cxx |   50 ++++++++++++++++++++++++++----------
 1 file changed, 37 insertions(+), 13 deletions(-)

New commits:
commit b863b1cb9c72d04933e6f9d3c361b8ebf9399cfd
Author: Varun Dhall <varun.dhall at studentpartner.com>
Date:   Wed May 31 21:03:33 2017 +0530

    EditEngine Implementing Paste for XML from clipboard
    
    Change-Id: Ia820a29bec8a6b102fb78cf325577b731a12c3c4
    Reviewed-on: https://gerrit.libreoffice.org/38282
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index 6346589c0d3b..d30bfb9d5b7a 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -3522,25 +3522,54 @@ EditSelection ImpEditEngine::InsertText( uno::Reference< datatransfer::XTransfer
     datatransfer::DataFlavor aFlavor;
     bool bDone = false;
 
+    char* ODF_XML_Env = getenv ("ODF_TEXT_FLAT_XML_ENV");
+
     if ( bUseSpecial )
     {
         // BIN
         SotExchange::GetFormatDataFlavor( SotClipboardFormatId::EDITENGINE, aFlavor );
         if ( rxDataObj->isDataFlavorSupported( aFlavor ) )
         {
-            try
+            if ( ODF_XML_Env == nullptr )
             {
-                uno::Any aData = rxDataObj->getTransferData( aFlavor );
-                uno::Sequence< sal_Int8 > aSeq;
-                aData >>= aSeq;
+                try
+                {
+                    uno::Any aData = rxDataObj->getTransferData( aFlavor );
+                    uno::Sequence< sal_Int8 > aSeq;
+                    aData >>= aSeq;
+                    {
+                        SvMemoryStream aBinStream( aSeq.getArray(), aSeq.getLength(), StreamMode::READ );
+                        aNewSelection = Read( aBinStream, rBaseURL, EE_FORMAT_BIN, rPaM );
+                    }
+                    bDone = true;
+                }
+                catch( const css::uno::Exception& )
                 {
-                    SvMemoryStream aBinStream( aSeq.getArray(), aSeq.getLength(), StreamMode::READ );
-                    aNewSelection = Read( aBinStream, rBaseURL, EE_FORMAT_BIN, rPaM );
                 }
-                bDone = true;
             }
-            catch( const css::uno::Exception& )
+        }
+
+        if ( !bDone )
+        {
+            // XML
+            SotExchange::GetFormatDataFlavor( SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT, aFlavor );
+            if ( rxDataObj->isDataFlavorSupported( aFlavor ) )
             {
+                try
+                {
+                    uno::Any aData = rxDataObj->getTransferData( aFlavor );
+                    uno::Sequence< sal_Int8 > aSeq;
+                    aData >>= aSeq;
+                    {
+                        SvMemoryStream aODFStream( aSeq.getArray(), aSeq.getLength(), StreamMode::READ );
+                        aNewSelection = Read( aODFStream, rBaseURL, EE_FORMAT_XML, rPaM );
+                    }
+                    bDone = true;
+                }
+                catch( const css::uno::Exception& e)
+                {
+                    SAL_WARN( "editeng", "Unable to paste EDITENGINE_ODF_TEXT_FLAT " << e.Message );
+                }
             }
         }
 
@@ -3575,11 +3604,6 @@ EditSelection ImpEditEngine::InsertText( uno::Reference< datatransfer::XTransfer
                 }
             }
         }
-        if ( !bDone )
-        {
-            // XML ?
-            // Currently, there is nothing like "The" XML format, StarOffice doesn't offer plain XML in Clipboard...
-        }
     }
     if ( !bDone )
     {


More information about the Libreoffice-commits mailing list