diff options
author | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-06-26 14:30:08 +0100 |
---|---|---|
committer | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-09-29 06:29:33 +0100 |
commit | 0684631240cfeba65c78657cbac946feb92eaf35 (patch) | |
tree | b95b61adeedcaa543fd15f26e77c7ceb5bcb29b9 | |
parent | db30bfa2249b951f522c50935eda12a1f7ecd4bd (diff) |
Take into account drawing layer for data area size.
The drawing layer could potentially have items that are outwith
the data area, but we probably want to have them included for
tiled rendering.
Change-Id: I958c4fa29491cdb0fd80392dfcfa033306f2b76c
-rw-r--r-- | sc/source/ui/view/gridwin4.cxx | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index c9a0cfee7c35..7a8e10a7c0f4 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -29,6 +29,7 @@ #include <sfx2/printer.hxx> #include <vcl/settings.hxx> +#include <svx/svdpage.hxx> #include <svx/svdview.hxx> #include "tabvwsh.hxx" @@ -388,17 +389,32 @@ Size ScGridWindow::GetDataAreaSize() SCTAB nTab = pViewData->GetTabNo(); + // Actual data area pDoc->ShrinkToDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow ); + // Drawing layer area -- is completely independent of the data area. + ScTabViewShell* pTabViewShell = pViewData->GetViewShell(); + SdrView* pDrawView = pTabViewShell->GetSdrView(); + SdrPageView* pPageView = pDrawView->GetSdrPageView(); + SdrPage* pPage = pPageView->GetPage(); + Rectangle aDrawDataArea = pPage->GetAllObjBoundRect(); + // Draw layer works in 100th mm, whereas we're working with TWIPs. + aDrawDataArea.SetPos( aDrawDataArea.TopLeft() * 1440 / 2540 ); + aDrawDataArea.SetSize( Size( aDrawDataArea.GetSize().Width() * 1440 / 2540, + aDrawDataArea.GetSize().Height() * 1440 / 2540 ) ); + + // We specifically keep iterating until we have covered both the + // data area AND the drawing layer area. We also make sure that + // we return an area corresponding to a whole number of cells. long nX = 0; - for ( SCCOL i = 0; i <= nEndCol; i++ ) + for ( SCCOL i = 0; i <= nEndCol || nX < aDrawDataArea.Right(); i++ ) { nX += pDoc->GetColWidth( i, nTab ); } long nY = 0; - for ( SCROW i = 0; i <= nEndRow; i++ ) + for ( SCROW i = 0; i <= nEndRow || nY < aDrawDataArea.Bottom(); i++ ) { nY += pDoc->GetRowHeight( i, nTab ); } |