chart2/source/view/main/SeriesPlotterContainer.cxx |    7 +----
 chart2/source/view/main/SeriesPlotterContainer.hxx |    2 -
 sw/qa/extras/layout/layout3.cxx                    |   25 +++++++++++++++++++++
 3 files changed, 28 insertions(+), 6 deletions(-)

New commits:
commit 40a19e61efff859d83e0689c0ed7d40c8e9ae8fe
Author:     Balazs Varga <balazs.varga.ext...@allotropia.de>
AuthorDate: Thu Mar 7 14:32:44 2024 +0100
Commit:     Balazs Varga <balazs.varga.ext...@allotropia.de>
CommitDate: Fri Mar 8 09:42:42 2024 +0100

    tdf#159456 - chart view: fix wrongly shifted value Y axis
    
    We only have to shift the category axis only, and not the
    value axis, if we have a chart data table.
    
    Change-Id: Ie77ea829e8f8987702dce7d17cb3e20054f3d8cc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164539
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de>

diff --git a/chart2/source/view/main/SeriesPlotterContainer.cxx 
b/chart2/source/view/main/SeriesPlotterContainer.cxx
index b70e51510b7d..06a22207634d 100644
--- a/chart2/source/view/main/SeriesPlotterContainer.cxx
+++ b/chart2/source/view/main/SeriesPlotterContainer.cxx
@@ -174,7 +174,7 @@ void 
SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(ChartModel& rChart
     }
 
     if (xDiagram->getDataTable().is())
-        m_bForceShiftPosition = true;
+        m_bTableShiftPosition = true;
 
     //prepare for autoscaling and shape creation
     // - create plotter for charttypes (for each first scale group at each 
plotter, as they are independent)
@@ -357,12 +357,9 @@ void 
SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(ChartModel& rChart
 bool SeriesPlotterContainer::isCategoryPositionShifted(const 
chart2::ScaleData& rSourceScale,
                                                        bool 
bHasComplexCategories)
 {
-    if (m_bForceShiftPosition)
-        return true;
-
     if (rSourceScale.AxisType == AxisType::CATEGORY)
         return bHasComplexCategories || rSourceScale.ShiftedCategoryPosition
-               || m_bChartTypeUsesShiftedCategoryPositionPerDefault;
+               || m_bTableShiftPosition || 
m_bChartTypeUsesShiftedCategoryPositionPerDefault;
 
     if (rSourceScale.AxisType == AxisType::DATE)
         return rSourceScale.ShiftedCategoryPosition;
diff --git a/chart2/source/view/main/SeriesPlotterContainer.hxx 
b/chart2/source/view/main/SeriesPlotterContainer.hxx
index 578f2ba2760c..38f3c8b909c8 100644
--- a/chart2/source/view/main/SeriesPlotterContainer.hxx
+++ b/chart2/source/view/main/SeriesPlotterContainer.hxx
@@ -151,7 +151,7 @@ private:
     sal_Int32 m_nMaxAxisIndex;
 
     bool m_bChartTypeUsesShiftedCategoryPositionPerDefault;
-    bool m_bForceShiftPosition = false;
+    bool m_bTableShiftPosition = false;
     sal_Int32 m_nDefaultDateNumberFormat;
 };
 
diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx
index 7bb1dbced75c..9d2de1ea0497 100644
--- a/sw/qa/extras/layout/layout3.cxx
+++ b/sw/qa/extras/layout/layout3.cxx
@@ -2458,6 +2458,31 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf159422)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(6573, nYSymbol3, 20);
 }
 
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf159456)
+{
+    // Given a document with chart, which have a datatable
+    createSwDoc("charttable.odt");
+    SwDoc* pDoc = getSwDoc();
+    SwDocShell* pShell = pDoc->GetDocShell();
+
+    // Dump the rendering of the first page as an XML file.
+    std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
+    MetafileXmlDump dumper;
+    xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile);
+    //// Without the fix, this would fail:
+    //// - Expected: 1
+    //// - Actual  : 1.5
+    //// - In <>, XPath contents of child does not match
+    assertXPathContent(
+        pXmlDoc,
+        
"/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/push[1]/push[103]/textarray/text"_ostr,
+        "1");
+    assertXPathContent(
+        pXmlDoc,
+        
"/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/push[1]/push[104]/textarray/text"_ostr,
+        "2");
+}
+
 } // end of anonymous namespace
 
 CPPUNIT_PLUGIN_IMPLEMENT();

Reply via email to