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 <a...@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, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits