summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2022-02-09 12:31:49 +0530
committerDennis Francis <dennis.francis@collabora.com>2022-02-11 05:39:00 +0100
commit59460f4e02cc312062d76a8fc315800129bb9219 (patch)
treedc5e6506cdf29c57c925ba99dd47f8e73932de31 /sfx2
parent0613c89308c3d37c7631a9af3605b31abcff6980 (diff)
lokCalcRTL: global RTL: fix chart edit mode rendering
If global RTL flag is set, vcl-window X offset of chart window is mirrored w.r.t parent window rectangle. This has to be undone to get the correct chart bounding box in negative X document coordinates so that the offset calculations for tile rendering remains the same for RTL documents irrespective of the system/global RTL setting. Conflicts: include/sfx2/lokcharthelper.hxx sfx2/source/view/lokcharthelper.cxx Change-Id: I3e1666681af4e7ab1257bcc88d44bbdb053a7d47 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129704 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> (cherry picked from commit 4fd2a14c6ee68f0574766ec7ec3dca35debe9d20) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129778 Tested-by: Jenkins Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/view/lokcharthelper.cxx18
1 files changed, 14 insertions, 4 deletions
diff --git a/sfx2/source/view/lokcharthelper.cxx b/sfx2/source/view/lokcharthelper.cxx
index a87388832755..c7941e6aa2ac 100644
--- a/sfx2/source/view/lokcharthelper.cxx
+++ b/sfx2/source/view/lokcharthelper.cxx
@@ -127,7 +127,17 @@ tools::Rectangle LokChartHelper::GetChartBoundingBox()
const auto nYNum = p.first * scaleY.GetDenominator();
const auto nYDen = p.second * scaleY.GetNumerator();
- Point aOffset = pWindow->GetOffsetPixelFrom(*pRootWin).scale(nXNum, nXDen, nYNum, nYDen);
+ Point aOffset = pWindow->GetOffsetPixelFrom(*pRootWin);
+ if (mbNegativeX && AllSettings::GetLayoutRTL())
+ {
+ // If global RTL flag is set, vcl-window X offset of chart window is
+ // mirrored w.r.t parent window rectangle. This needs to be reverted.
+ aOffset.setX(pRootWin->GetOutOffXPixel() + pRootWin->GetSizePixel().Width()
+ - pWindow->GetOutOffXPixel() - pWindow->GetSizePixel().Width());
+
+ }
+
+ aOffset = aOffset.scale(nXNum, nXDen, nYNum, nYDen);
Size aSize = pWindow->GetSizePixel().scale(nXNum, nXDen, nYNum, nYDen);
aBBox = tools::Rectangle(aOffset, aSize);
}
@@ -158,7 +168,7 @@ bool LokChartHelper::Hit(const Point& aPos)
return false;
}
-bool LokChartHelper::HitAny(const Point& aPos)
+bool LokChartHelper::HitAny(const Point& aPos, bool bNegativeX)
{
SfxViewShell* pCurView = SfxViewShell::Current();
int nPartForCurView = pCurView ? pCurView->getPart() : -1;
@@ -167,7 +177,7 @@ bool LokChartHelper::HitAny(const Point& aPos)
{
if (pViewShell->GetDocId() == pCurView->GetDocId() && pViewShell->getPart() == nPartForCurView)
{
- LokChartHelper aChartHelper(pViewShell);
+ LokChartHelper aChartHelper(pViewShell, bNegativeX);
if (aChartHelper.Hit(aPos))
return true;
}
@@ -253,7 +263,7 @@ void LokChartHelper::PaintAllChartsOnTile(VirtualDevice& rDevice,
{
if (pCurView && pViewShell->GetDocId() == pCurView->GetDocId() && pViewShell->getPart() == nPartForCurView)
{
- LokChartHelper aChartHelper(pViewShell);
+ LokChartHelper aChartHelper(pViewShell, bNegativeX);
aChartHelper.PaintTile(rDevice, aTileRect);
}
pViewShell = SfxViewShell::GetNext(*pViewShell);