diff options
author | Dennis Francis <dennis.francis@collabora.com> | 2020-06-03 14:02:44 +0530 |
---|---|---|
committer | Dennis Francis <dennis.francis@collabora.com> | 2020-07-07 11:48:00 +0200 |
commit | 5483183ab0389914830fa183af1242860f2ab0a6 (patch) | |
tree | 551941f222a1296c1fe357e966fd84e8b7c918b3 /sc | |
parent | f9589bb011451dc27790281bb4727bc1ffa05412 (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.cxx | 23 |
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) { |