diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2019-09-05 19:09:09 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2019-09-06 22:39:24 +0200 |
commit | 1dccd6814f1fe7a06f3168d01d18d347269cd3c1 (patch) | |
tree | 941175081fb8b4ec3cafb522911720a436d74510 /svx | |
parent | 374782be555c1d91628a098c3f1c5cd85f7b0b01 (diff) |
tdf#126184 Use max paper dimensions to calculate clip region
Assuming at least A4 for the page size isn't enough if
e.g. A2 or larger is used, so too much was clipped in that case.
Therefore, use the the maximum paper width/height instead, which
is 6 m by default. This is still far from the 19 km that caused
tdf#63955 and I cannot reproduce tdf#63955 with that new limit.
A big thanks to Regina Henschel for the great analysis in
tdf#126184!
(Side note: Comments 18 and 19 in tdf#63955 suggest to do the whole
clipping elsewhere, so if anybody wants to take a look at this...)
Change-Id: Iccacad621675df6c7b4477182d7332c4a3d67139
Reviewed-on: https://gerrit.libreoffice.org/78690
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/sdr/contact/viewcontactofsdrpathobj.cxx | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx index 082abb6a0e27..393676f9b4c7 100644 --- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx @@ -19,6 +19,7 @@ #include <sdr/contact/viewcontactofsdrpathobj.hxx> +#include <svtools/optionsdrawinglayer.hxx> #include <svx/svdopath.hxx> #include <svx/svdpage.hxx> #include <svx/sdr/primitive2d/sdrattributecreator.hxx> @@ -100,11 +101,14 @@ namespace sdr //would not over flow into a tiny clip region if (nPageWidth < SAL_MAX_INT32/2 && nPageHeight < SAL_MAX_INT32/2) { - //But, see tdf#97276 and tdf#98366. Don't clip too much if the + //But, see tdf#97276, tdf#126184 and tdf#98366. Don't clip too much if the //underlying page dimension is unknown or a paste document //where the page sizes use the odd default of 10x10 - nPageWidth = std::max<sal_Int32>(21000, nPageWidth); - nPageHeight = std::max<sal_Int32>(29700, nPageHeight); + const SvtOptionsDrawinglayer aDrawinglayerOpt; + const sal_Int32 nMaxPaperWidth = aDrawinglayerOpt.GetMaximumPaperWidth() * 1000; + const sal_Int32 nMaxPaperHeight = aDrawinglayerOpt.GetMaximumPaperHeight() * 1000; + nPageWidth = std::max<sal_Int32>(nPageWidth, nMaxPaperWidth); + nPageHeight = std::max<sal_Int32>(nPageHeight, nMaxPaperHeight); basegfx::B2DRange aClipRange(-nPageWidth, -nPageHeight, nPageWidth*2, nPageHeight*2); |