sc/source/ui/view/gridwin4.cxx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
New commits: commit 8866098c2ac731ffd878c72d70f38f6a65c17184 Author: Dennis Francis <dennis.fran...@collabora.com> AuthorDate: Wed Nov 10 18:51:59 2021 +0530 Commit: Dennis Francis <dennis.fran...@collabora.com> CommitDate: Tue Jan 25 08:21:49 2022 +0100 lokCalcRTL: Fix the tile offsets Change-Id: Id0db3d422c8c47ed6fbbc505ca9a857ac54c033a (cherry picked from commit 250aeac7434f924c82927a9de8a089e42a4fec00) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128889 Tested-by: Jenkins Reviewed-by: Dennis Francis <dennis.fran...@collabora.com> diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 18a8ef76f2cd..f92b92096766 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -1326,6 +1326,22 @@ namespace nBottomRightTileIndex = nEndIndex; } + void lcl_RTLAdjustTileColOffset(ScViewData& rViewData, sal_Int32& nTileColOffset, + tools::Long nTileEndPx, sal_Int32 nEndCol, SCTAB nTab, + const ScDocument& rDoc, double fPPTX) + { + auto GetColWidthPx = [&rDoc, nTab, fPPTX](SCCOL nCol) { + const sal_uInt16 nSize = rDoc.GetColWidth(nCol, nTab); + const tools::Long nSizePx = ScViewData::ToPixel(nSize, fPPTX); + return nSizePx; + }; + + ScPositionHelper rHelper = rViewData.GetLOKWidthHelper(); + tools::Long nEndColPos = rHelper.computePosition(nEndCol, GetColWidthPx); + + nTileColOffset += (nEndColPos - nTileEndPx - nTileColOffset); + } + class ScLOKProxyObjectContact final : public sdr::contact::ObjectContactOfPageView { private: @@ -1468,6 +1484,15 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice, if (nBottomRightTileRow > MAXTILEDROW) nBottomRightTileRow = MAXTILEDROW; + bool bLayoutRTL = rDoc.IsLayoutRTL( nTab ); + + if (bLayoutRTL) + { + lcl_RTLAdjustTileColOffset(mrViewData, nTopLeftTileColOffset, + fTileRightPixel, nBottomRightTileCol, nTab, + rDoc, fPPTX); + } + // size of the document including drawings, charts, etc. SCCOL nEndCol = 0; SCROW nEndRow = 0;