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

Armin Le Grand alg at apache.org
Fri Oct 11 00:44:50 PDT 2013


 sc/source/ui/app/transobj.cxx |   19 +++++++++++++------
 sc/source/ui/inc/transobj.hxx |    4 +++-
 2 files changed, 16 insertions(+), 7 deletions(-)

New commits:
commit 483ea555bfdde46dc581deaae5e782405de81a2e
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Oct 10 16:20:50 2013 +0000

    Resolves: #i123405# Allow to not limit size to PageSize...
    
    when creating Metafile content
    
    (cherry picked from commit c4b76f0442c452693846a4c92970ba67f26f2226)
    
    Change-Id: I8536f4d55e422ad5550c1aaa311789ad31647611

diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index 0269e2a..a961cbe 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -354,11 +354,15 @@ sal_Bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor )
         }
         else if ( nFormat == SOT_FORMAT_GDIMETAFILE )
         {
-            InitDocShell();
+            // #i123405# Do not limit visual size calculation for metafile creation.
+            // It seems unlikely that removing the limitation causes problems since
+            // metafile creation means that no real pixel device in the needed size is
+            // created.
+            InitDocShell(false);
+
             SfxObjectShell* pEmbObj = aDocShellRef;
 
             // like SvEmbeddedTransfer::GetData:
-
             GDIMetaFile     aMtf;
             VirtualDevice   aVDev;
             MapMode         aMapMode( pEmbObj->GetMapUnit() );
@@ -380,7 +384,8 @@ sal_Bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor )
         else if ( nFormat == SOT_FORMATSTR_ID_EMBED_SOURCE )
         {
             //TODO/LATER: differentiate between formats?!
-            InitDocShell();         // set aDocShellRef
+            // #i123405# Do limit visual size calculation to PageSize
+            InitDocShell(true);         // set aDocShellRef
 
             SfxObjectShell* pEmbObj = aDocShellRef;
             bOK = SetObject( pEmbObj, SCTRANS_TYPE_EMBOBJ, rFlavor );
@@ -582,8 +587,10 @@ ScMarkData ScTransferObj::GetSourceMarkData()
 //
 //  initialize aDocShellRef with a live document from the ClipDoc
 //
+// #i123405# added parameter to allow size calculation without limitation
+// to PageSize, e.g. used for Metafile creation for clipboard.
 
-void ScTransferObj::InitDocShell()
+void ScTransferObj::InitDocShell(bool bLimitToPageSize)
 {
     if ( !aDocShellRef.Is() )
     {
@@ -700,14 +707,14 @@ void ScTransferObj::InitDocShell()
         for (nCol=nStartX; nCol<=nEndX; nCol++)
         {
             long nAdd = pDestDoc->GetColWidth( nCol, 0 );
-            if ( nSizeX+nAdd > aPaperSize.Width() && nSizeX )   // above limit?
+            if ( bLimitToPageSize && nSizeX+nAdd > aPaperSize.Width() && nSizeX )   // above limit?
                 break;
             nSizeX += nAdd;
         }
         for (SCROW nRow=nStartY; nRow<=nEndY; nRow++)
         {
             long nAdd = pDestDoc->GetRowHeight( nRow, 0 );
-            if ( nSizeY+nAdd > aPaperSize.Height() && nSizeY )  // above limit?
+            if ( bLimitToPageSize && nSizeY+nAdd > aPaperSize.Height() && nSizeY )  // above limit?
                 break;
             nSizeY += nAdd;
         }
diff --git a/sc/source/ui/inc/transobj.hxx b/sc/source/ui/inc/transobj.hxx
index 46446b0..9bd0d12 100644
--- a/sc/source/ui/inc/transobj.hxx
+++ b/sc/source/ui/inc/transobj.hxx
@@ -56,7 +56,9 @@ private:
     bool                            bHasFiltered;       // if has filtered rows
     bool                            bUseInApi;          // to recognize clipboard content copied from API
 
-    void        InitDocShell();
+    // #i123405# added parameter to allow size calculation without limitation
+    // to PageSize, e.g. used for Metafile creation for clipboard.
+    void        InitDocShell(bool bLimitToPageSize);
     static void StripRefs( ScDocument* pDoc, SCCOL nStartX, SCROW nStartY,
                             SCCOL nEndX, SCROW nEndY,
                             ScDocument* pDestDoc=0,


More information about the Libreoffice-commits mailing list