[Libreoffice-commits] core.git: oox/source sd/qa

Tibor Nagy (via logerrit) logerrit at kemper.freedesktop.org
Fri Oct 1 15:29:48 UTC 2021


 oox/source/ppt/pptshapecontext.cxx  |    2 -
 sd/qa/unit/data/pptx/tdf144616.pptx |binary
 sd/qa/unit/import-tests.cxx         |   59 ++++++++++++++++++++++++++++++++++++
 3 files changed, 60 insertions(+), 1 deletion(-)

New commits:
commit 83d92437e05a9ec872d9303953fa408dd4dcbcde
Author:     Tibor Nagy <nagy.tibor2 at nisz.hu>
AuthorDate: Sat Sep 25 20:12:27 2021 +0200
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Fri Oct 1 17:29:14 2021 +0200

    tdf#144616 PPTX import: fix hyperlinks on shapes
    
    Follow-up to commit 6e200689eb309cdbe1e4f08311a400835de19bfb
    "tdf#141704 PPTX import: fix hyperlinks on images"
    
    Change-Id: Ie9f1ba56d03462bb8d7ab376e23c89c921a8bcd6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122610
    Tested-by: László Németh <nemeth at numbertext.org>
    Reviewed-by: László Németh <nemeth at numbertext.org>

diff --git a/oox/source/ppt/pptshapecontext.cxx b/oox/source/ppt/pptshapecontext.cxx
index 62351c913567..d7f3d90f2d0f 100644
--- a/oox/source/ppt/pptshapecontext.cxx
+++ b/oox/source/ppt/pptshapecontext.cxx
@@ -187,7 +187,7 @@ ContextHandlerRef PPTShapeContext::onCreateContext( sal_Int32 aElementToken, con
         }
     }
 
-    return this;
+    return ShapeContext::onCreateContext(aElementToken, rAttribs);
 }
 
 }
diff --git a/sd/qa/unit/data/pptx/tdf144616.pptx b/sd/qa/unit/data/pptx/tdf144616.pptx
new file mode 100644
index 000000000000..bb153dcff904
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf144616.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index edf69608092a..9bae1492fbca 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -243,6 +243,7 @@ public:
     void testTdf113198();
     void testTdf49856();
     void testTdf103347();
+    void testHyperlinksOnShapes();
 
     CPPUNIT_TEST_SUITE(SdImportTest);
 
@@ -366,6 +367,7 @@ public:
     CPPUNIT_TEST(testGreysScaleGraphic);
     CPPUNIT_TEST(testTdf134210CropPosition);
     CPPUNIT_TEST(testTdf103347);
+    CPPUNIT_TEST(testHyperlinksOnShapes);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -3601,6 +3603,63 @@ void SdImportTest::testTdf103347()
     xDocShRef->DoClose();
 }
 
+void SdImportTest::testHyperlinksOnShapes()
+{
+    sd::DrawDocShellRef xDocShRef
+        = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/tdf144616.pptx"), PPTX);
+
+    for (sal_Int32 i = 0; i < 7; i++)
+    {
+        uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(i, 0, xDocShRef));
+        uno::Reference<document::XEventsSupplier> xEventsSupplier(xShape, uno::UNO_QUERY);
+        uno::Reference<container::XNameAccess> xEvents(xEventsSupplier->getEvents());
+
+        uno::Sequence<beans::PropertyValue> props;
+        xEvents->getByName("OnClick") >>= props;
+        comphelper::SequenceAsHashMap map(props);
+        auto iter(map.find("ClickAction"));
+        switch (i)
+        {
+        case 0:
+            CPPUNIT_ASSERT_EQUAL(css::presentation::ClickAction_FIRSTPAGE,
+                iter->second.get<css::presentation::ClickAction>());
+            break;
+        case 1:
+            CPPUNIT_ASSERT_EQUAL(css::presentation::ClickAction_LASTPAGE,
+                iter->second.get<css::presentation::ClickAction>());
+            break;
+        case 2:
+            CPPUNIT_ASSERT_EQUAL(css::presentation::ClickAction_NEXTPAGE,
+                iter->second.get<css::presentation::ClickAction>());
+            break;
+        case 3:
+            CPPUNIT_ASSERT_EQUAL(css::presentation::ClickAction_PREVPAGE,
+                iter->second.get<css::presentation::ClickAction>());
+            break;
+        case 4:
+        {
+            auto iter2(map.find("Bookmark"));
+            CPPUNIT_ASSERT_EQUAL(OUString("Second slide"), iter2->second.get<OUString>());
+        }
+        break;
+        case 5:
+            CPPUNIT_ASSERT_EQUAL(css::presentation::ClickAction_STOPPRESENTATION,
+                iter->second.get<css::presentation::ClickAction>());
+            break;
+        case 6:
+        {
+            auto iter1(map.find("Bookmark"));
+            CPPUNIT_ASSERT_EQUAL(OUString("http://www.example.com/"), iter1->second.get<OUString>());
+        }
+        break;
+        default:
+            break;
+        }
+    }
+
+    xDocShRef->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list