summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrzej Hunt <andrzej.hunt@collabora.com>2014-06-26 14:30:08 +0100
committerAndrzej Hunt <andrzej.hunt@collabora.com>2014-06-26 14:30:08 +0100
commitaec7317d368d0dcfeaccc19878bcb179de5075f5 (patch)
tree34d5f8ce963614fbb1e0601c7a51be906666ef71
parent2d90abfb94ed579f9427b94691b4a704bd8f4355 (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.cxx20
1 files changed, 18 insertions, 2 deletions
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index a34b95e49237..08fc100e78e8 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"
@@ -394,17 +395,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 );
}