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;

Reply via email to