oox/source/drawingml/diagram/diagramlayoutatoms.cxx |    6 +++++-
 sd/qa/unit/data/pptx/smartart-text.pptx             |binary
 sd/qa/unit/import-tests.cxx                         |   17 +++++++++++++++++
 3 files changed, 22 insertions(+), 1 deletion(-)

New commits:
commit 4b149e04ca37056642badab9d18c51857d52e946
Author: Grzegorz Araminowicz <g.araminow...@gmail.com>
Date:   Wed Aug 9 12:27:36 2017 +0200

    SmartArt: fix duplicated text
    
    in some diagrams there are two shapes for the same node - tx and sp
    sp should be just space, so remove text from it
    
    Change-Id: I832651918294bd458148a23d6cc1e59c545adc13
    Reviewed-on: https://gerrit.libreoffice.org/40913
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx 
b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
index 79390b1a3792..c3cc7a0dc977 100644
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
@@ -280,8 +280,12 @@ void AlgAtom::layoutShape( const ShapePtr& rShape,
         }
 
         case XML_sp:
-            // HACK. Handled one level higher. Or rather, planned to
+        {
+            // HACK: Handled one level higher. Or rather, planned to
+            // HACK: text should appear only in tx node; we're assigning it 
earlier, so let's remove it here
+            rShape->setTextBody(TextBodyPtr());
             break;
+        }
 
         case XML_tx:
         {
diff --git a/sd/qa/unit/data/pptx/smartart-text.pptx 
b/sd/qa/unit/data/pptx/smartart-text.pptx
new file mode 100755
index 000000000000..9656e4fab64d
Binary files /dev/null and b/sd/qa/unit/data/pptx/smartart-text.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 392369234d0a..ba1a44485f25 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -165,6 +165,7 @@ public:
     void testTdf109067();
     void testSmartArt1();
     void testSmartArtChildren();
+    void testSmartArtText();
     void testTdf109223();
     void testActiveXCheckbox();
     void testTdf109187();
@@ -240,6 +241,7 @@ public:
     CPPUNIT_TEST(testTdf109067);
     CPPUNIT_TEST(testSmartArt1);
     CPPUNIT_TEST(testSmartArtChildren);
+    CPPUNIT_TEST(testSmartArtText);
     CPPUNIT_TEST(testTdf109223);
     CPPUNIT_TEST(testActiveXCheckbox);
     CPPUNIT_TEST(testTdf109187);
@@ -2301,6 +2303,21 @@ void SdImportTest::testSmartArtChildren()
     xDocShRef->DoClose();
 }
 
+void SdImportTest::testSmartArtText()
+{
+    sd::DrawDocShellRef xDocShRef = 
loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/smartart-text.pptx"), 
PPTX);
+    uno::Reference<drawing::XShapes> xShapeGroup(getShapeFromPage(0, 0, 
xDocShRef), uno::UNO_QUERY_THROW);
+    uno::Reference<drawing::XShapes> xShapeGroup2(xShapeGroup->getByIndex(0), 
uno::UNO_QUERY_THROW);
+
+    uno::Reference<text::XText> xText0(xShapeGroup2->getByIndex(0), 
uno::UNO_QUERY_THROW);
+    CPPUNIT_ASSERT(xText0->getString().isEmpty());
+
+    uno::Reference<text::XText> xText1(xShapeGroup2->getByIndex(1), 
uno::UNO_QUERY_THROW);
+    CPPUNIT_ASSERT_EQUAL(OUString("test"), xText1->getString());
+
+    xDocShRef->DoClose();
+}
+
 void SdImportTest::testTdf109223()
 {
     // In the test document flipV attribute is defined for a group shape
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to