chart2/source/tools/UncachedDataSequence.cxx |   13 +++++++++++--
 sw/qa/extras/layout/data/tdf75659.docx       |binary
 sw/qa/extras/layout/layout.cxx               |   25 +++++++++++++++++++++++++
 3 files changed, 36 insertions(+), 2 deletions(-)

New commits:
commit 0869c65a7e937d71bd623ed498a3a47cebe0a66d
Author:     Balazs Varga <balazs.varga...@gmail.com>
AuthorDate: Tue Jun 11 13:26:50 2019 +0200
Commit:     Xisco Faulí <xiscofa...@libreoffice.org>
CommitDate: Tue Jun 18 14:07:55 2019 +0200

    tdf#75659 Chart: fix empty legend at not available legend names
    
    by using localized versions of "Unnamed Series 1" etc.
    
    Note: OOXML files don't contain the default or fallback legend names
    used by MSO in this case, so the original empty string replacement
    of the missing names resulted bad chart import.
    
    Change-Id: I2897c70d9003e1ab3241dd569de0d79821d896b1
    Reviewed-on: https://gerrit.libreoffice.org/73817
    Reviewed-by: László Németh <nem...@numbertext.org>
    Tested-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit 007bf60611e2ba5a65ffabe80dbb0e279fcb9f26)
    Reviewed-on: https://gerrit.libreoffice.org/74252
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.varga...@gmail.com>
    Reviewed-by: Xisco Faulí <xiscofa...@libreoffice.org>

diff --git a/chart2/source/tools/UncachedDataSequence.cxx 
b/chart2/source/tools/UncachedDataSequence.cxx
index b9721490b7e7..ca3a9280c452 100644
--- a/chart2/source/tools/UncachedDataSequence.cxx
+++ b/chart2/source/tools/UncachedDataSequence.cxx
@@ -23,6 +23,8 @@
 
 #include <cppuhelper/supportsservice.hxx>
 #include <algorithm>
+#include <strings.hrc>
+#include <ResId.hxx>
 #include <com/sun/star/chart2/XInternalDataProvider.hpp>
 #include <tools/diagnose_ex.h>
 
@@ -209,8 +211,15 @@ OUString SAL_CALL 
UncachedDataSequence::getSourceRangeRepresentation()
 
 Sequence< OUString > SAL_CALL UncachedDataSequence::generateLabel( 
chart2::data::LabelOrigin )
 {
-    // auto-generated label is an empty string
-    return Sequence< OUString >(1);
+    // auto-generated label
+    sal_Int32 nSeries = m_aSourceRepresentation.toInt32() + 1;
+    OUString aResString(::chart::SchResId(STR_DATA_UNNAMED_SERIES_WITH_INDEX));
+    const OUString aReplacementStr("%NUMBER");
+    sal_Int32 nIndex = aResString.indexOf(aReplacementStr);
+    OUString aName;
+    if( nIndex != -1 )
+        aName = aResString.replaceAt(nIndex, aReplacementStr.getLength(), 
OUString::number(nSeries));
+    return Sequence< OUString >( &aName, 1 );
 }
 
 ::sal_Int32 SAL_CALL UncachedDataSequence::getNumberFormatKeyByIndex( 
::sal_Int32 )
diff --git a/sw/qa/extras/layout/data/tdf75659.docx 
b/sw/qa/extras/layout/data/tdf75659.docx
new file mode 100644
index 000000000000..a3cde330f8f5
Binary files /dev/null and b/sw/qa/extras/layout/data/tdf75659.docx differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 1175d25ef573..325c0ef49e64 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -2327,6 +2327,31 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf125335)
     // This failed, if the legend first label is not "Data3". The legend 
position is bottom.
 }
 
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf75659)
+{
+    SwDoc* pDoc = createDoc("tdf75659.docx");
+    SwDocShell* pShell = pDoc->GetDocShell();
+
+    // Dump the rendering of the first page as an XML file.
+    std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
+    MetafileXmlDump dumper;
+    xmlDocPtr pXmlDoc = dumpAndParse(dumper, *xMetaFile);
+    CPPUNIT_ASSERT(pXmlDoc);
+
+    assertXPathContent(pXmlDoc,
+                       
"/metafile/push[1]/push[1]/push[1]/push[4]/push[1]/textarray[17]/text",
+                       "Unnamed Series 1");
+
+    assertXPathContent(pXmlDoc,
+                       
"/metafile/push[1]/push[1]/push[1]/push[4]/push[1]/textarray[18]/text",
+                       "Unnamed Series 2");
+
+    assertXPathContent(pXmlDoc,
+                       
"/metafile/push[1]/push[1]/push[1]/push[4]/push[1]/textarray[19]/text",
+                       "Unnamed Series 3");
+    // These failed, if the legend names are empty strings.
+}
+
 CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf108021)
 {
     SwDoc* pDoc = createDoc("tdf108021.odt");
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to