From 8da86149f3b7a04fb3a442e6f8733ba463945a57 Mon Sep 17 00:00:00 2001 From: Balazs Varga Date: Thu, 4 Jun 2020 11:33:06 +0200 Subject: tdf#133632 Chart DOCX Import: fix percentage number format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set the LinkNumberFormatToSource to false only if we have an inner data table and the labels are shown as values. Regression from commit: e0da00d655ecca5986eea3812a8a670c6adbc40f (tdf#132174 Chart DOCX import: fix label number format) Change-Id: I879c5d81709995bfa49c18e0c84aaf6dc3dea41c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95493 Tested-by: Jenkins Reviewed-by: László Németh (cherry picked from commit 53eeb419836f31bc4e16a2276a7ef875bea4ff97) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95984 Reviewed-by: Xisco Fauli --- chart2/qa/extras/chart2import.cxx | 22 ++++++++++++++++++++++ chart2/qa/extras/data/docx/tdf133632.docx | Bin 0 -> 26280 bytes oox/source/drawingml/chart/seriesconverter.cxx | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 chart2/qa/extras/data/docx/tdf133632.docx diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index 0b70320d1e9a..4a6f07d5f310 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -91,6 +91,7 @@ public: void testTextBreakXLSX(); void testNumberFormatsXLSX(); void testNumberFormatsDOCX(); + void testPercentageNumberFormatsDOCX(); void testTransparentBackground(OUString const & filename); @@ -209,6 +210,7 @@ public: CPPUNIT_TEST(testTextBreakXLSX); CPPUNIT_TEST(testNumberFormatsXLSX); CPPUNIT_TEST(testNumberFormatsDOCX); + CPPUNIT_TEST(testPercentageNumberFormatsDOCX); CPPUNIT_TEST(testAutoTitleDelDefaultValue2007XLSX); CPPUNIT_TEST(testAutoTitleDelDefaultValue2013XLSX); CPPUNIT_TEST(testDispBlanksAsDefaultValue2007XLSX); @@ -1314,6 +1316,26 @@ void Chart2ImportTest::testNumberFormatsDOCX() CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource); } +void Chart2ImportTest::testPercentageNumberFormatsDOCX() +{ + load("/chart2/qa/extras/data/docx/", "tdf133632.docx"); + uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChartDoc.is()); + + css::uno::Reference xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW); + Reference xDataSeries = getDataSeriesFromDoc(xChartDoc, 0); + uno::Reference xPropertySet(xDataSeries, uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT(xPropertySet.is()); + + bool bLinkNumberFormatToSource = false; + chart2::DataPointLabel aLabel; + xPropertySet->getPropertyValue("Label") >>= aLabel; + CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber); + CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent); + bool bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource; + CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess && bLinkNumberFormatToSource); +} + void Chart2ImportTest::testAutoTitleDelDefaultValue2007XLSX() { load("/chart2/qa/extras/data/xlsx/", "autotitledel_2007.xlsx"); diff --git a/chart2/qa/extras/data/docx/tdf133632.docx b/chart2/qa/extras/data/docx/tdf133632.docx new file mode 100644 index 000000000000..b970e73f4c2f Binary files /dev/null and b/chart2/qa/extras/data/docx/tdf133632.docx differ diff --git a/oox/source/drawingml/chart/seriesconverter.cxx b/oox/source/drawingml/chart/seriesconverter.cxx index 5d08b28d8094..c55c3891a975 100644 --- a/oox/source/drawingml/chart/seriesconverter.cxx +++ b/oox/source/drawingml/chart/seriesconverter.cxx @@ -343,7 +343,7 @@ void DataLabelsConverter::convertFromModel( const Reference< XDataSeries >& rxDa { bool bMSO2007Doc = getFilter().isMSO2007Document(); // tdf#132174: the inner data table has no own cell number format. - if( getChartDocument()->hasInternalDataProvider() ) + if( getChartDocument()->hasInternalDataProvider() && mrModel.mobShowVal.get(!bMSO2007Doc) ) mrModel.maNumberFormat.mbSourceLinked = false; lclConvertLabelFormatting( aPropSet, getFormatter(), mrModel, rTypeGroup, true, bMSO2007Doc ); -- cgit