oox/source/drawingml/hyperlinkcontext.cxx | 2 +- sd/qa/unit/data/pptx/tdf65724.pptx |binary sd/qa/unit/import-tests.cxx | 28 ++++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-)
New commits: commit d0550d1c5d0e27b8fe9d93e2c7a6dc7ffc4f8c21 Author: Tibor Nagy <nagy.tib...@nisz.hu> AuthorDate: Thu Apr 15 12:12:47 2021 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Thu Apr 29 11:03:09 2021 +0200 tdf#65724 PPTX import: fix internal hyperlink to slide Internal hyperlinks were lost, if they refer slides using their names. Change-Id: Ic464300adb1e6e50bd4d61d957306592b7b22b14 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114139 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/oox/source/drawingml/hyperlinkcontext.cxx b/oox/source/drawingml/hyperlinkcontext.cxx index 7ea5d5d10b53..0221e3875d31 100644 --- a/oox/source/drawingml/hyperlinkcontext.cxx +++ b/oox/source/drawingml/hyperlinkcontext.cxx @@ -96,7 +96,7 @@ HyperLinkContext::HyperLinkContext( ContextHandler2Helper const & rParent, } else if ( aPPAction.match( "hlinksldjump" ) ) { - sURL.clear(); + sHref = sURL; sal_Int32 nIndex2 = 0; while ( nIndex2 < sHref.getLength() ) diff --git a/sd/qa/unit/data/pptx/tdf65724.pptx b/sd/qa/unit/data/pptx/tdf65724.pptx new file mode 100644 index 000000000000..fef2d9f2dde7 Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf65724.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index cbe6c061d90e..bbdc8b5a19cd 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -119,6 +119,7 @@ public: virtual void setUp() override; void testDocumentLayout(); + void testInternalHyperlink(); void testHyperlinkColor(); void testSmoketest(); void testTdf131269(); @@ -236,6 +237,7 @@ public: CPPUNIT_TEST_SUITE(SdImportTest); CPPUNIT_TEST(testDocumentLayout); + CPPUNIT_TEST(testInternalHyperlink); CPPUNIT_TEST(testHyperlinkColor); CPPUNIT_TEST(testSmoketest); CPPUNIT_TEST(testTdf131269); @@ -429,6 +431,32 @@ void SdImportTest::testDocumentLayout() } } +void SdImportTest::testInternalHyperlink() +{ + ::sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/tdf65724.pptx"), PPTX); + + uno::Reference< beans::XPropertySet > xShape( getShapeFromPage( 1, 0, xDocShRef ) ); + + // Get first paragraph + uno::Reference<text::XTextRange> const xParagraph( getParagraphFromShape( 0, xShape ) ); + + // first chunk of text + uno::Reference<text::XTextRange> xRun( getRunFromParagraph( 0, xParagraph ) ); + uno::Reference< beans::XPropertySet > xPropSet( xRun, uno::UNO_QUERY_THROW ); + + uno::Reference<text::XTextField> xField; + xPropSet->getPropertyValue("TextField") >>= xField; + CPPUNIT_ASSERT_MESSAGE("The text field is missing!", xField.is() ); + + xPropSet.set(xField, uno::UNO_QUERY); + OUString aURL; + xPropSet->getPropertyValue("URL") >>= aURL; + CPPUNIT_ASSERT_EQUAL_MESSAGE("URLs don't match", OUString("#Slide2"), aURL); + + xDocShRef->DoClose(); +} + void SdImportTest::testHyperlinkColor() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/tdf137367.pptx"), PPTX); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits