summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2020-06-03 14:02:44 +0530
committerDennis Francis <dennis.francis@collabora.com>2020-07-07 11:48:00 +0200
commit5483183ab0389914830fa183af1242860f2ab0a6 (patch)
tree551941f222a1296c1fe357e966fd84e8b7c918b3 /sc
parentf9589bb011451dc27790281bb4727bc1ffa05412 (diff)
ScViewData::EditGrowY: keep EditView's print-twips data updated
Change-Id: I0207e65fc0386eb9a86de6ab4472780553eadd4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98126 Tested-by: Jenkins Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/view/viewdata.cxx23
1 files changed, 22 insertions, 1 deletions
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 11f24c453fa8..7a4d8224a06f 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2050,6 +2050,10 @@ void ScViewData::EditGrowY( bool bInitial )
comphelper::FlagRestorationGuard aFlagGuard(bGrowing, true);
+ bool bLOKActive = comphelper::LibreOfficeKit::isActive();
+ bool bLOKPrintTwips = bLOKActive && comphelper::LibreOfficeKit::isCompatFlagSet(
+ comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs);
+
ScSplitPos eWhich = GetActivePart();
ScVSplitPos eVWhich = WhichV(eWhich);
EditView* pCurView = pEditView[eWhich].get();
@@ -2069,11 +2073,21 @@ void ScViewData::EditGrowY( bool bInitial )
EditEngine* pEngine = pCurView->GetEditEngine();
vcl::Window* pWin = pCurView->GetWindow();
+ MapUnit eWinUnit = GetLogicMode(eWhich).GetMapUnit();
SCROW nBottom = GetPosY(eVWhich) + VisibleCellsY(eVWhich);
Size aSize = pEngine->GetPaperSize();
+ Size aSizePTwips;
tools::Rectangle aArea = pCurView->GetOutputArea();
+ tools::Rectangle aAreaPTwips;
+
+ if (bLOKPrintTwips)
+ {
+ aSizePTwips = OutputDevice::LogicToLogic(aSize, MapMode(eWinUnit), MapMode(MapUnit::MapTwip));
+ aAreaPTwips = pCurView->GetLOKSpecialOutputArea();
+ }
+
long nOldBottom = aArea.Bottom();
long nTextHeight = pEngine->GetTextHeight();
@@ -2100,12 +2114,17 @@ void ScViewData::EditGrowY( bool bInitial )
{
++nEditEndRow;
ScDocument* pLocalDoc = GetDocument();
- long nPix = ToPixel( pLocalDoc->GetRowHeight( nEditEndRow, nTabNo ), nPPTY );
+ long nRowHeight = pLocalDoc->GetRowHeight( nEditEndRow, nTabNo );
+ long nPix = ToPixel( nRowHeight, nPPTY );
aArea.AdjustBottom(pWin->PixelToLogic(Size(0,nPix)).Height() );
+ if (bLOKPrintTwips)
+ aAreaPTwips.AdjustBottom(nRowHeight);
if ( aArea.Bottom() > aArea.Top() + aSize.Height() - 1 )
{
aArea.SetBottom( aArea.Top() + aSize.Height() - 1 );
+ if (bLOKPrintTwips)
+ aAreaPTwips.SetBottom( aAreaPTwips.Top() + aSizePTwips.Height() - 1 );
bMaxReached = true; // don't occupy more cells beyond paper size
}
@@ -2116,6 +2135,8 @@ void ScViewData::EditGrowY( bool bInitial )
if (bChanged)
{
pCurView->SetOutputArea(aArea);
+ if (bLOKPrintTwips)
+ pCurView->SetLOKSpecialOutputArea(aAreaPTwips);
if (nEditEndRow >= nBottom || bMaxReached)
{