From 455d4047487396c3c70d6113ac5d07deecb1d3a1 Mon Sep 17 00:00:00 2001 From: Dennis Francis Date: Mon, 22 Nov 2021 14:29:05 +0530 Subject: lokCalcRTL: fix editcell painting from other views as well Change-Id: Iac431996570f1f7eb091809442d8781ea60aa9b5 --- sc/source/ui/view/gridwin4.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 4770c183324f..fac0f60b41a0 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -1050,12 +1050,26 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI Point aStart = mrViewData.GetScrPos( nCol1, nRow1, eOtherWhich ); Point aEnd = mrViewData.GetScrPos( nCol2+1, nRow2+1, eOtherWhich ); + if (bIsTiledRendering && bLayoutRTL) + { + // Transform the cell range X coordinates such that the edit cell area is + // horizontally mirrored w.r.t the (combined-)tile. + tools::Long nStartTileX = -aOriginalMode.GetOrigin().X() / TWIPS_PER_PIXEL; + // Note: nStartTileX is scaled by 2 only to offset for the addition of + // the -ve of the same qty (and nScrX) few lines below. + tools::Long nMirrorX = 2 * nStartTileX + aOutputData.GetScrW(); + aStart.setX(nMirrorX - 1 - aStart.X()); + aEnd.setX(nMirrorX - 1 - aEnd.X()); + } + // don't overwrite grid tools::Long nLayoutSign = bLayoutRTL ? -1 : 1; aEnd.AdjustX( -(2 * nLayoutSign) ); aEnd.AdjustY( -2 ); tools::Rectangle aBackground(aStart, aEnd); + if (bIsTiledRendering && bLayoutRTL) + aBackground.Justify(); // Need to draw the background in absolute coords. Point aOrigin = aOriginalMode.GetOrigin(); -- cgit